对话框
QT中内置了大量的对话框 供开发者使用
自定义对话框
- 模态对话框(窗口打开之后,只能关闭之后才能进行编辑)
阻塞式创建对话框 无法对其他对话框做操作 - 非模态对话框(窗口打开之后,还能进行其他编辑)
阻塞式 激活时可以对其他窗口做操作
模态对话框
创建方法1
QDialog diag(this);
diag.resize(200,200);
diag.exec();//防止一闪而过
创建方法2
QDialog diag(this);
diag.setModal(true);
diag.show();
diag.exec();//防止一闪而过
结果
非模态对话框
ui设计
创建方法1
QDialog diag(this);
diag.resize(200,200);
diag.setModal(false);//也可以不要这句话
diag.show();
diag.exec();//防止一闪而过
创建方法2
QDialog* diag = new QDialog(this);//每次点击的话都会new一个,会导致内存满
diag->resize(200,200);
diag->show();
diag->setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭的时候,释放上次创建的diag,解决上述溢出问题
结果
QT内置对话框(标准对话框)
- 文件对话框 QFileDialog::getOpenFileName
- 颜色对话框 QColorDialog::getColor
- 文字对话框 QFontDialog::getFont
- 消息对话框 QMessageBox::critical//危险的
QMessageBox::warning
QMessageBox::information
connect(ui->filebtn,&QPushButton::clicked,this,[this]()->void
{
//文件对话框
//(父亲,标题,默认打开路径,过滤的文件
QString filename = QFileDialog::getOpenFileName(this,"打开文本文件","F:/","*.txt");
qDebug() <<filename;
//颜色对话框
//(默认颜色,父亲,标题)
QColor color = QColorDialog::getColor(Qt::blue,this,"文字颜色");
//ui->label->setStyleSheet("background-color: white;font-size:10px;color:color");
ui->textEdit->setTextColor(color);
ui->textEdit->setText("nihao");
//文字对话框
bool bl = true;//是否使用用户使用的字体
QFont font = QFontDialog::getFont(&bl);
ui->label->setFont(font);
ui->label->setText("今天也很不错啊!");
qDebug() <<bl;
//消息对话框
QMessageBox::critical(this,"错误","报错",QMessageBox::Close);//危险的
QMessageBox::warning(this,"警告","报错");
QMessageBox::information(this,"提示","报错");
// (父亲,标题,内容,按钮,回车时默认选择)
auto btn = QMessageBox::question(this,"问题"," 今天星期五吗? ",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
if(btn == QMessageBox::Yes)
{
QMessageBox::information(this,"","是的");
}
else
{
QMessageBox::critical(this,"错误"," 不,你错啦 " );
}
});
结果
整合版
#include "Mainwindow.h"
#include "ui_mainwindow.h"
#include <QtDebug>
#include <QMenuBar> //菜单栏
#include <QDialog>
#include <QFileDialog>//文件对话框
#include <QColorDialog>//颜色对话框
#include <QFontDialog>//文字对话框
#include <QMessageBox>//消息对话框(警告,提示,错误...)
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//模态对话框
connect(ui->modbtn,&QPushButton::clicked,this,[this]()->void
{
//创建对话框(模态的两种创建方法)
QDialog diag(this);
diag.resize(200,200);
//方式一:
diag.exec();//防止一闪而过
/*
//方式二:
diag.setModal(true);
diag.show();
diag.exec();//防止一闪而过
*/
});
//非模态对话框
connect(ui->nomodbtn,&QPushButton::clicked,this,[this]()->void
{
//创建对话框(模态的两种创建方法)
/*
//方式一:
QDialog diag(this);
diag.resize(200,200);
diag.setModal(false);//也可以不要这句话
diag.show();
diag.exec();//防止一闪而过
*/
QDialog* diag = new QDialog(this);//每次点击的话都会new一个,会导致内存满
diag->resize(200,200);
diag->show();
diag->setAttribute(Qt::WA_DeleteOnClose);//当窗口关闭的时候,释放上次创建的diag,解决上述溢出问题
});
/*
QT内置对话框(标准对话框)
1.文件对话框 QFileDialog::getOpenFileName
2.颜色对话框 QColorDialog::getColor
3.文字对话框 QFontDialog::getFont
4.消息对话框
QMessageBox::critical//危险的
QMessageBox::warning
QMessageBox::information
*/
connect(ui->filebtn,&QPushButton::clicked,this,[this]()->void
{
//文件对话框
//(父亲,标题,默认打开路径,过滤的文件
QString filename = QFileDialog::getOpenFileName(this,"打开文本文件","F:/","*.txt");
qDebug() <<filename;
//颜色对话框
//(默认颜色,父亲,标题)
QColor color = QColorDialog::getColor(Qt::blue,this,"文字颜色");
//ui->label->setStyleSheet("background-color: white;font-size:10px;color:color");
ui->textEdit->setTextColor(color);
ui->textEdit->setText("nihao");
//文字对话框
bool bl = true;//是否使用用户使用的字体
QFont font = QFontDialog::getFont(&bl);
ui->label->setFont(font);
ui->label->setText("今天也很不错啊!");
qDebug() <<bl;
//消息对话框
QMessageBox::critical(this,"错误","报错",QMessageBox::Close);//危险的
QMessageBox::warning(this,"警告","报错");
QMessageBox::information(this,"提示","报错");
// (父亲,标题,内容,按钮,回车时默认选择)
auto btn = QMessageBox::question(this,"问题","你爱我吗",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
if(btn == QMessageBox::Yes)
{
QMessageBox::information(this,"","我也爱你");
}
else
{
QMessageBox::critical(this,"错误"," 你是爱我的 " );
}
});
}
MainWindow::~MainWindow()
{
delete ui;
}