Qt桌面应用开发 第四天(对话框 界面布局)

目录

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模拟对话框

会阻塞同一应用程序中其他窗口的输入。

创建流程:

  1. 利用QDialog类创建对话框对象
  2. 调用对象的exec()成员函数
cpp 复制代码
//举例:模拟对话框
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非模拟对话框

打开非模拟对话框时,可以操作其他窗口。

创建流程:

  1. 利用QDialog类创建对话框对象
  2. 调用对象的show()成员函数
cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                QDialog* l=new QDialog(this);
                l->setWindowTitle("非模拟对话框");
                l->resize(100,80);
                l->show();
                //关闭非模拟对话框时,将对话框对象释放
                l->setAttribute(Qt::WA_DeleteOnClose);
            }
            );

运行效果:

在上述案例中,对话框创建在堆区 ,没有释放窗口对象,可以设置属性,在关闭非模拟对话框时,将对话框对象释放;若非模拟对话框创建在栈区,对话框会马上释放

cpp 复制代码
  l->setAttribute(Qt::WA_DeleteOnClose);//55号属性

1.3消息对话框

Qt内置标准对话框:

QMessageBox用于显示消息提示,一般会使用的静态成员函数如下:

1.3.1询问对话框
cpp 复制代码
        connect(ui->actionnew,&QAction::triggered,
            [=](){
                if(QMessageBox::Save==QMessageBox::question(this,"询问对话框","是否保存",
                                      QMessageBox::Save|QMessageBox::Cancel,
                                      QMessageBox::Cancel))
                    {
                         qDebug()<<"选择保存";
                    }
                     else
                    {
                        qDebug()<<"选择取消";
                    }
            }
            );

运行效果:

1.3.2严重错误对话框
cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                QMessageBox::critical(this,"严重错误对话框","出错了");
            }
            );

运行效果:

1.3.3信息提示对话框
cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                QMessageBox::information(this,"信息提示对话框","小贴士提醒您");
            }
            );

运行效果:

1.3.4警告对话框
cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                QMessageBox::warning(this,"警告对话框","注意前方道路");
            }
            );

运行效果:

1.4其他对话框

1.4.1颜色对话框

QColorDialog::getColor()创建颜色对话框。

cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                QColor color=QColorDialog::getColor();
                qDebug()<<color.red()<<color.green()<<color.blue();
            }
            );

运行效果:

1.4.2文件对话框

QFileDialog::getOpenFileName创建文件对话框。

cpp 复制代码
    connect(ui->actionnew,&QAction::triggered,
            [=](){
                //参数:父类窗口,窗口标题,默认的文件路径
                QString filePath=QFileDialog::getOpenFileName(this,"文件对话框","E:/a");
                qDebug()<<filePath;
            }
            );

运行效果:

1.4.3字体对话框
cpp 复制代码
    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,会让窗口高度和控件高度贴合:

运行效果:

相关推荐
东风吹柳24 分钟前
观察者模式(sigslot in C++)
c++·观察者模式·信号槽·sigslot
A懿轩A32 分钟前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
云空39 分钟前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
大胆飞猪2 小时前
C++9--前置++和后置++重载,const,日期类的实现(对前几篇知识点的应用)
c++
1 9 J2 小时前
数据结构 C/C++(实验五:图)
c语言·数据结构·c++·学习·算法
夕泠爱吃糖2 小时前
C++中如何实现序列化和反序列化?
服务器·数据库·c++
小老鼠不吃猫2 小时前
力学笃行(二)Qt 示例程序运行
开发语言·qt
长潇若雪2 小时前
《类和对象:基础原理全解析(上篇)》
开发语言·c++·经验分享·类和对象
晓纪同学3 小时前
QT创建一个模板槽和信号刷新UI
开发语言·qt·ui
染指11104 小时前
50.第二阶段x86游戏实战2-lua获取本地寻路,跨地图寻路和获取当前地图id
c++·windows·lua·游戏安全·反游戏外挂·游戏逆向·luastudio