TestDialog *dlg=new TestDialog(this);
// //Dialog窗口不能依附父窗口实现,只能单独显示
// //模态,exec()阻塞程序的执行,进行模态显示
dlg->exec();
对话框的模态显示需调用函数.exec(),该函数的返回值为int类型。
1.第一种模态对话框的关闭(隐藏)方式:ACCepted();
调用该函数实现将当前的对话框窗口隐藏,且对应的枚举值为1,意味着当执行该函数时.exec()函数生命周期结束,且返回值为int 1。
2.第二种模态对话框的关闭(隐藏)方式:REjected();
调用该函数实现将当前的对话框窗口隐藏,且对应的枚举值为0,意味着当执行该函数时.exec()函数生命周期结束,且返回值为int 0。
3…第二种模态对话框的关闭(隐藏)方式:done(int);
调用该函数实现将当前的对话框窗口关闭,且该函数中传参的值决定.exec()函数的返回值为多少,即若传参为int 1,则实现ACCepted方法,若传参为int 0,即实现REjected方法。若传参为其他int型,则.exec()函数将返回对应的值,并将对话框关闭 。
QMessageBox是基于对话框类的一类弹出窗口,有icon,title,text,button四个属性,并且可以根据需求进行修改。
实例如下:这段代码中演示了常见的四种弹出窗口:
void Mywidget::on_jumpbtn_clicked()
{
//第一个参数为指向父窗口的指针
//第二个参数为title值
//第三个为text值
QMessageBox::about(this,"关于","一个消息的提示框");//about窗口,icon与父窗口的icon相同
QMessageBox::critical(this,"错误!","这是一个错误!");//进行错误提示,icon固定
if(QMessageBox::question(this,"问题?","要这样做吗?",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Save)==QMessageBox::Save)//询问窗口,返回值为QMessageBox,可以根据用户的选择进行判断,第四个参数为button的枚举,有多种类型提供修改,第五个参数是默认选中的按钮。
{
QMessageBox::information(this,"信息提示","那就这样吧");
}//信息提示窗口
else {
QMessageBox::warning(this,"警告!!!","怎么可以这样!!!");//警告窗口
}
}
基于QDialog的文件操作窗口,通常返回值都是QString(文件所在路径)。此处转载苏老师笔记(侵删)。
/*
通用参数:
- parent: 当前对话框窗口的父对象也就是父窗口
- caption: 当前对话框窗口的标题
- dir: 当前对话框窗口打开的默认目录
- options: 当前对话框窗口的一些可选项,枚举类型, 一般不需要进行设置, 使用默认值即可
- filter: 过滤器, 在对话框中只显示满足条件的文件, 可以指定多个过滤器, 使用 ;; 分隔
- 样式举例:
- Images (*.png *.jpg)
- Images (*.png *.jpg);;Text files (*.txt)
- selectedFilter: 如果指定了多个过滤器, 通过该参数指定默认使用哪一个, 不指定默认使用第一个过滤器
*/
// 打开一个目录, 得到这个目录的绝对路径
[static] QString QFileDialog::getExistingDirectory(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), QFileDialog::Options options = ShowDirsOnly);
// 打开一个文件, 得到这个文件的绝对路径
[static] QString QFileDialog::getOpenFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
// 打开多个文件, 得到这多个文件的绝对路径
[static] QStringList QFileDialog::getOpenFileNames(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
// 打开一个目录, 使用这个目录来保存指定的文件
[static] QString QFileDialog::getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(), const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = Options());
实例化演示:
void Mywidget::on_filebtn_clicked()
{
QStringList filenames=QFileDialog::getOpenFileNames(
this,tr("打开文件"),"F:\\流光拾贝",tr("(*.png);;(*.jpg)"));
QString names;
for(int i=0;i!=filenames.size();++i)
{
names+=filenames.at(i);
}
QMessageBox::about(this,"文件输出","该目录中的文件名为:"+names);
}
1.调用静态成员函数进行字体修改。
2.获取一个实例化的对象。
3.调用setFont( QFont)函数对指定窗口中的字体进行字体修改。
void Mywidget::on_settextbtn_clicked()
{
bool ok;//字体是否被修改的布尔值
QFont font = QFontDialog::getFont(&ok, QFont("Times", 12), this);
if (ok) {//返回的是true
ui->label->setFont(font);//修改当前窗口中的字体
// QApplication::setFont(font);改变所有窗口里的字体
} else {
QMessageBox::warning(this,"警告!","字体未修改!");
}
}