QT学习笔记2:可变形的对话框——扩展对话框
程序员文章站
2022-03-09 22:51:09
...
Qt常见的可变形的的对话框有两种——扩展对话框和多页对话框。
扩展对话框
做个简单的示范,在Qt designer里面设计如下,这里为了便于理解,将组件最简单化,设置一个pushButton,放在顶部,一个GroupBox,里面放了两个单选按钮(这里随意)
然后设置主窗口为垂直布局
然后开始进行真正实现扩展的步骤
1.将”更多”按钮的属性中的 checkable 属性勾选上
checkable 属性的含义简单来说,就是将按钮变成切换按钮,即按钮有两种状态(打开/关闭),类似于电灯开关,按一下灯开,再按一下就关闭;如果不设置,按钮为触发按钮,即只有一种状态(产生某种特定效果),按下去就回弹,比如门铃按钮,每次按动就会触发门铃。
2.在代码中将’GroupBox’ 组件设置为 hide
ui.moreGroupBox->hide();
这里将可扩展的部分隐藏,相当于默认窗口刚打开时不显示扩展内容
3.设置窗口自适应大小
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
这里很重要,只有设置了自适应大小,窗口才能随着扩展组件的显示与隐藏改变形状,才能产生窗口扩展了的效果
4.设置按钮到对应扩展组件的信号/槽关系
这里可以在designer里设置,也可以在代码中设置,这里给出代码
connect(ui.moreButton, SIGNAL(toggled(bool)), ui.moreGroupBox, SLOT(setVisible(bool)));
简单解释一下就是由这个‘moreButton’发送'toggled'信号到‘moreGroupBox’对象处,触发‘setVisible’槽函数,根据按钮状态对组件状态进行更改。
注:toggled 用于判断按钮状态(打开/关闭),‘setVisible’ 用于设置组件是否可见。
至此,扩展对话框设置完毕,效果如下
再次点击即可关闭,更多细节可以自己去慢慢琢磨,比如按钮可以根据打开或者关闭分别显示‘更多’和‘收起’。
.h文件
#pragma once
#include <QDialog>
#include "ui_TestWgt.h"
class TestWgt : public QDialog
{
Q_OBJECT
public:
TestWgt(QWidget *parent = Q_NULLPTR);
private:
Ui::TestWgt ui;
};
.cpp文件
#include "TestWgt.h"
#include <QLayout>
TestWgt::TestWgt(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
ui.moreGroupBox->hide();
this->layout()->setSizeConstraint(QLayout::SetFixedSize);
connect(ui.moreButton, SIGNAL(toggled(bool)), ui.moreGroupBox, SLOT(setVisible(bool)));
}
上一篇: BUUCTF 还原大师
下一篇: 大师架构系列-Docker搭建与配置优化