目录
1.对话框
1.1模拟对话框
1.2非模拟对话框
1.3消息对话框
1.3.1询问对话框
1.3.2严重错误对话框
1.3.3信息提示对话框
1.3.4警告对话框
1.4其他对话框
1.4.1颜色对话框
1.4.2文件对话框
1.4.3字体对话框
1.5界面布局
1.对话框
1.1模拟对话框
会阻塞同一应用程序中其他窗口的输入。
创建流程:
- 利用QDialog类创建对话框对象
- 调用对象的exec()成员函数
//举例:模拟对话框
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);connect(ui->actionnew,&QAction::triggered,[=](){QDialog l(this);l.setWindowTitle("模拟对话框");l.resize(100,80);l.exec(); //会弹出模拟对话框});
}
运行效果:
1.2非模拟对话框
打开非模拟对话框时,可以操作其他窗口。
创建流程:
- 利用QDialog类创建对话框对象
- 调用对象的show()成员函数
connect(ui->actionnew,&QAction::triggered,[=](){QDialog* l=new QDialog(this);l->setWindowTitle("非模拟对话框");l->resize(100,80);l->show();//关闭非模拟对话框时,将对话框对象释放l->setAttribute(Qt::WA_DeleteOnClose);});
运行效果:
在上述案例中,对话框创建在堆区,没有释放窗口对象,可以设置属性,在关闭非模拟对话框时,将对话框对象释放;若非模拟对话框创建在栈区,对话框会马上释放
l->setAttribute(Qt::WA_DeleteOnClose);//55号属性
1.3消息对话框
Qt内置标准对话框:
QMessageBox用于显示消息提示,一般会使用的静态成员函数如下:
1.3.1询问对话框
connect(ui->actionnew,&QAction::triggered,[=](){if(QMessageBox::Save==QMessageBox::question(this,"询问对话框","是否保存",QMessageBox::Save|QMessageBox::Cancel,QMessageBox::Cancel)){qDebug()<<"选择保存";}else{qDebug()<<"选择取消";}});
运行效果:
1.3.2严重错误对话框
connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::critical(this,"严重错误对话框","出错了");});
运行效果:
1.3.3信息提示对话框
connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::information(this,"信息提示对话框","小贴士提醒您");});
运行效果:
1.3.4警告对话框
connect(ui->actionnew,&QAction::triggered,[=](){QMessageBox::warning(this,"警告对话框","注意前方道路");});
运行效果:
1.4其他对话框
1.4.1颜色对话框
QColorDialog::getColor()创建颜色对话框。
connect(ui->actionnew,&QAction::triggered,[=](){QColor color=QColorDialog::getColor();qDebug()<<color.red()<<color.green()<<color.blue();});
运行效果:
1.4.2文件对话框
QFileDialog::getOpenFileName创建文件对话框。
connect(ui->actionnew,&QAction::triggered,[=](){//参数:父类窗口,窗口标题,默认的文件路径QString filePath=QFileDialog::getOpenFileName(this,"文件对话框","E:/a");qDebug()<<filePath;});
运行效果:
1.4.3字体对话框
connect(ui->actionnew,&QAction::triggered,[=](){bool ok;QFont font=QFontDialog::getFont(&ok);qDebug()<<"字体"<<font.family()<<"字号"<<font.pointSize()<<"加粗"<<font.bold()<<"倾斜"<<font.italic()<<"ok"<<ok;});
运行效果:
1.5界面布局
水平布局/垂直布局:
水平弹簧控件/垂直弹簧控件:
页面widget的sizePolicy中的垂直策略fixed,会让窗口高度和控件高度贴合:
运行效果: