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

运行效果:

相关推荐
山野万里__12 分钟前
C++与Java内存共享技术:跨平台与跨语言实现指南
android·java·c++·笔记
Mr_Xuhhh1 小时前
网络基础(1)
c语言·开发语言·网络·c++·qt·算法
醇醛酸醚酮酯2 小时前
std::promise和std::future的使用示例——单线程多链接、多线程单链接
网络·c++·算法
背影疾风2 小时前
C++之路:类基础、构造析构、拷贝构造函数
linux·开发语言·c++
程序员弘羽2 小时前
C++ 第四阶段 内存管理 - 第二节:避免内存泄漏的技巧
java·jvm·c++
DolphinDB4 小时前
如何在C++交易系统中集成高性能回测与模拟撮合
c++
feiyangqingyun4 小时前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
筏.k4 小时前
C++ 网络编程(14) asio多线程模型IOThreadPool
网络·c++·架构
清醒的兰5 小时前
Qt 基于TCP套接字编程
网络·qt·tcp
爱喝茶的小茶5 小时前
周赛98补题
开发语言·c++·算法