在前面说了消息对话框 QMessageBox ,这里再来说说其他标准对话框。
颜色对话框 QColorDialog
使用颜色对话框 QColorDialog 要先添加头文件 #include <QColorDialog>
它有一个方法是 getColor , 代码中的 getColor 函数参数都选择默认。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(ui->actionNew,&QAction::triggered,[=](){
QColorDialog::getColor();
});
}
运行代码如下: 假设我要设置初始调色板颜色参数不是白色,应该怎么做呢?
connect(ui->actionNew,&QAction::triggered,[=](){
QColorDialog::getColor(QColor(0,0,255));
});
这里设置为蓝色。 需要注意 getColor 这个函数的返回值是 QColor ,当我们选中一个颜色后,点击 OK 按钮,该函数就会返回我们选中的那个颜色值,而如果我们点击 Cancel 按钮,该函数就会返回一个无效值(invalid)。
因此,我们可以用一个变量来接收这个返回值。看下面代码。
connect(ui->actionNew,&QAction::triggered,[=](){
QColor color = QColorDialog::getColor(QColor(0,0,255));
qDebug()<<"r="<<color.red()<<","<<"g="<<color.green()<<","<<"b="<<color.blue()<<".";
});
运行程序,在应用程序输出窗口中输出如下:
文件对话框 QFileDialog
使用文件对话框 QFileDialog ,要先添加头文件 #include <QFileDialog>
它是一个非模态对话框。
这里使用它的一个方法是 getOpenFileName, 函数参数: 参数一:指定父对象,一般就是 this
参数二:对话框的标题,默认设置为caption。如果没有指定标题,则将使用默认标题。
参数三:默认路径,一般写桌面(C:\Users\DELL\Desktop),但是在代码中路径则不能直接这样写,应该写成 “C:\Users\DELL\Desktop” 或 "C:/Users/DELL/Desktop"
如果 dir 包含一个文件名,则该文件将被选中。比如参数三写成"C:\Users\DELL\Desktop\模板.txt",则模板.txt在程序运行的时候就会被选中,如下面所示。 参数四:文件过滤格式(文件夹不会被过滤),以便只显示那些匹配过滤器的文件。如果你需要多个过滤器,用’;;'分隔,例如: 演示代码如下:
connect(ui->actionNew,&QAction::triggered,[=](){
QFileDialog::getOpenFileName(this,"打开文件","C:/Users/DELL/Desktop","Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
});
函数返回值:
connect(ui->actionNew,&QAction::triggered,[=](){
QString str = QFileDialog::getOpenFileName(this,"打开文件","C:/Users/DELL/Desktop","Images (*.png *.xpm *.jpg);;Text files (*.txt);;XML files (*.xml)");
qDebug()<<str;
});
运行程序,选择桌面上的一个文件 e-book.png,之后在应用程序输出界面中会输出下面这句话。 所以,返回值是用户所选的现有文件的路径。 注意:虽然我点击了打开,但是并不会真的会打开该文件,因为我没在程序中写打开该文件的代码。
字体对话框 QFontDialog
使用字体对话框 QFontDialog ,要先添加头文件 #include <QFontDialog>
这里使用它的一个方法是 getFont,看下帮助文档。 代码如下:
connect(ui->actionNew,&QAction::triggered,[=](){
bool flag;
QFont font = QFontDialog::getFont(&flag,QFont("华文彩云",36));
qDebug()<<"字体:"<<font.family()<<"字号:"<<font.pointSize()<<"是否加粗:"<<font.bold()<<"是否倾斜:"<<font.italic();
});
运行之后: 并且点击 OK 之后,在应用程序输出窗口打印输出下面的调试信息:
|