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

运行效果:

相关推荐
大江东去浪淘尽千古风流人物1 分钟前
【cuVSLAM】GPU 加速、多相机、实时视觉/视觉惯性 SLAM设计优势
c++·人工智能·数码相机·ubuntu·计算机视觉·augmented reality
自信150413057596 小时前
重生之从0开始学习c++之模板初级
c++·学习
历程里程碑6 小时前
2. Git版本回退全攻略:轻松掌握代码时光机
大数据·c++·git·elasticsearch·搜索引擎·github·全文检索
极客智造7 小时前
深度解析 C++ 类继承与多态:面向对象编程的核心
c++
零号全栈寒江独钓9 小时前
基于c/c++实现linux/windows跨平台获取ntp网络时间戳
linux·c语言·c++·windows
CSCN新手听安10 小时前
【linux】高级IO,以ET模式运行的epoll版本的TCP服务器实现reactor反应堆
linux·运维·服务器·c++·高级io·epoll·reactor反应堆
雾岛听蓝11 小时前
Qt操作指南:窗口组成与菜单栏
开发语言·经验分享·笔记·qt
松☆11 小时前
C++ 算法竞赛题解:P13569 [CCPC 2024 重庆站] osu!mania —— 浮点数精度陷阱与 `eps` 的深度解析
开发语言·c++·算法
(Charon)11 小时前
【C++/Qt】C++/Qt 实现 TCP Server:支持启动监听、消息收发、日志保存
c++·qt·tcp/ip
并不喜欢吃鱼12 小时前
从零开始C++----七.继承及相关模型和底层(上篇)
开发语言·c++