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

运行效果:

相关推荐
小七在进步10 小时前
string的使用(1)
c++·visual studio
白杨尚青11 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
kloc14 小时前
聊天室项目入口网关子服务的实现
linux·c++
csdn_aspnet17 小时前
C++ 3个有序点的方向(Orientation of 3 ordered points)
c++·算法
小七在进步18 小时前
string的使用(2)
c++
青少儿编程课堂19 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:折半搜索优化子集枚举(Meet in the Middle)解析
c++·python·算法·bfs·信息学竞赛
wo_jack20 小时前
C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?
数据结构·c++·面试·stl·list
青少儿编程课堂21 小时前
蓝桥杯青少组图形化 + 全国青少年信息素养大赛 + 电子学会Scratch考级:校园连连看解析
c++·python·算法·bfs·信息学竞赛
草莓熊Lotso1 天前
【C++ 基于微服务的即时通讯系统】文件存储子服务实战:UUID生成、文件IO封装与全接口单元测试
开发语言·网络·数据库·c++·微服务·架构·单元测试
David猪大卫2 天前
【C++修炼】map 和 set 的使用
c语言·开发语言·数据结构·c++·经验分享·笔记·学习