QT消息盒子和对话框
1.消息盒子
(1)弹出警告盒子
[] :: ::( *, const &title, const &text, :: = Ok, :: = )
返回值:你点击的那个按钮
参数: --》父窗口this
title --》消息盒子的标题
text --》消息盒子的正文内容
--》你想要在盒子中显示的按钮,默认显示ok按钮,多个按钮使用按位或连接起来
--》默认选中的按钮,当你敲回车的时候,默认的按钮就被点击了
(2)弹出致命错误盒子
[] :: ::( *, const &title, const &text, :: = Ok, :: = )
(3)弹出帮助盒子
[] :: ::( *, const &title, const &text, :: = (Yes | No), :: = )
2.如何判断你点击了盒子中的哪个按钮
思路:通过函数的返回值判断
//登录按钮的槽函数
void MainWindow::on_loginbt_clicked()
{
//获取输入框中输入的用户名和密码
QString name=ui->namele->text();
QString passwd=ui->passle->text();
//判断用户名或者密码是否正确
if(name=="gec" && passwd=="123456")
{
//跳到下一个界面
secondwin *newwin=new secondwin();
newwin->show();
//把登录界面关闭
this->close();
}
else
{
//输入错误,弹出警告盒子
// QMessageBox::StandardButton ret=QMessageBox::warning(this,"你错了","兄弟,账号或者密码输入有误",QMessageBox::Open|QMessageBox::Save,QMessageBox::Open);
// if(ret==QMessageBox::Open) //说明用户点击的是open按钮
// qDebug()<<"你点击了open";
// if(ret==QMessageBox::Save) //说明用户点击的是save按钮
// qDebug()<<"你点击了save";
//弹出致命错误盒子
QMessageBox::StandardButton ret=QMessageBox::critical(this,"你错了","兄弟,账号或者密码输入有误",QMessageBox::Open|QMessageBox::Save,QMessageBox::Open);
if(ret==QMessageBox::Open) //说明用户点击的是open按钮
qDebug()<<"你点击了open";
if(ret==QMessageBox::Save) //说明用户点击的是save按钮
qDebug()<<"你点击了save";
}
}
3.对话框
(1)QT内置的对话框(QT本身自带的对话框)
颜色对话框
[] ::(const & = Qt::white, * = , const &title = ()) //弹出颜色对话框
返回值:你选中的那个颜色 是QT中专门用来表示各种颜色的一个类
参数: --》颜色对话框默认选中的颜色
(int r, int g, int b) //构造函数
--》父窗口this
title --》标题名字
如何判断用户究竟选中了ok还是选中了?
bool ::() const //判断颜色是否合法,合法返回true,不合法返回false
如果用户点击ok,颜色就是合法的
如果用户点击,颜色就是非法的
字体对话框
[] QFont ::(bool *ok, * = )
返回值:QFont --》你选中的那个字体
参数:ok --》判断你是否选中了某个字体,选中了 true 没有选中false
--》父窗口this
文件对话框
[] ::( * = , const & = (), const &dir = (), const & = ())
返回值: 你选中的那个文件的绝对路径名
参数: --》父窗口this
--》文件对话框的标题
dir --》指定你要打开的目录路径,默认打开的是你工程编译产生的临时文件夹路径(build开头的那个路径)
--》文件过滤器,把你想要文件显示出来,不想要的文件隐藏
(2)自定义对话框
2.1 概念:程序员依据自己的想法去设计一个对话框
2.2 模态对话框和非模态对话框:
模态对话框:这个对话框不关闭,无法操作其他界面 --》exec()函数显示的就是模态对话框
非模态对话框:这个对话框不关闭,照样可以操作其他界面 --》show()函数显示的就是非模态对话框
2.3 如何设计自定义对话框?
右键点击工程名--》选择QT,QT设计师界面类--》模板要选择--》可以给自定义对话框取新的类名--》确认即可
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
//颜色对话框
void MainWindow::on_pushButton_clicked()
{
//弹出颜色对话框
QColor mycolor=QColorDialog::getColor(QColor(255,0,0),this,"彭老师的颜色对话框");
if(mycolor.isValid()) //说明用户点击了ok
qDebug()<<"点击了ok";
else //说明用户点击了cancel
qDebug()<<"点击了取消";
}
//字体对话框
void MainWindow::on_pushButton_2_clicked()
{
bool ok;
//弹出字体对话框
QFont myfont=QFontDialog::getFont(&ok,this);
//判断用户是否选中了某个字体
if(ok) //用户点击了ok
{
qDebug()<<"点击了ok";
//使用你刚才选中的字体
ui->pushButton->setFont(myfont);
ui->pushButton_2->setFont(myfont);
ui->pushButton_3->setFont(myfont);
}
else
qDebug()<<"点击了取消";
}
//弹出文件对话框
void MainWindow::on_pushButton_3_clicked()
{
//弹出文件对话框
QString filepath=QFileDialog::getOpenFileName(this,"彭老师的文件对话框","D:/GZ2162文件","*.jpg *.mp3");
qDebug()<<"你选中的那个文件是: "<
自定义对话框
#include "loginwin.h"
#include "ui_loginwin.h"
#include "regdialog.h"
loginwin::loginwin(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::loginwin)
{
ui->setupUi(this);
}
loginwin::~loginwin()
{
delete ui;
}
//注册按钮对应的槽函数
void loginwin::on_regbt_clicked()
{
//弹出自定义的对话框
regdialog *dialog=new regdialog(this);
//显示对话框
//dialog->show();
dialog->exec();
}