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,会让窗口高度和控件高度贴合:

运行效果:

相关推荐
南境十里·墨染春水4 小时前
C++传记(面向对象)虚析构函数 纯虚函数 抽象类 final、override关键字
开发语言·c++·笔记·算法
2301_797172754 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
比昨天多敲两行5 小时前
C++ 二叉搜索树
开发语言·c++·算法
Season4505 小时前
C++11之正则表达式使用指南--[正则表达式介绍]|[regex的常用函数等介绍]
c++·算法·正则表达式
问好眼5 小时前
《算法竞赛进阶指南》0x04 二分-1.最佳牛围栏
数据结构·c++·算法·二分·信息学奥赛
海海不瞌睡(捏捏王子)6 小时前
C++ 知识点概要
开发语言·c++
minji...7 小时前
Linux 进程信号(二)信号的保存,sigset_t,sigprocmask,sigpending
linux·运维·服务器·网络·数据结构·c++·算法
小菜鸡桃蛋狗10 小时前
C++——类和对象(下)
开发语言·c++
crescent_悦10 小时前
C++:Highest Price in Supply Chain
开发语言·c++
feng_you_ying_li10 小时前
底层实现map和set的第一步,AVL树的学习
c++