Java教程

第9篇 Qt实现安装向导对话框之代码布局篇(二)

本文主要是介绍第9篇 Qt实现安装向导对话框之代码布局篇(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第9篇 Qt实现安装向导对话框之代码布局篇(二)

  • 1.头文件
    • 1.1.加入头文件说明
  • 2.简单的布局方式简说
    • 2.1.水平布局QHBoxLayout
    • 2.2.垂直布局QVBoxLayout
    • 2.3.网格布局(栅格布局)QGridLayout

1.头文件

首先说明一下,我是通过在一个窗口中添加一个按钮,然后通过点击按钮显示出来,所以安装向导对话框并不是主窗口。先看看头文件里的东西吧。

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QWizard>
#include <QCheckBox>
#include <QLineEdit>
#include <QProgressBar>
#include <QTextEdit>
#include <QComboBox>
#include <QListWidget>
#include <QStackedWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
    class Widget;
}
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

public slots:
    void setupWizard_show();//显示安装向导界面
    void changeNextbutton();//改变下一步按钮牛的点击性
    void chooseLocation();//选择安装路径
    void changeActivation(int index);//改变激活方式
    void changePage(int id);//页面更换
private:
    Ui::Widget *ui;
    QPushButton* beginbutton;//点击显示安装向导界面
    QWizard* setupWizard;//安装向导界面
    QWizardPage* page_one;//第一页
    QWizardPage* page_two;//第二页
    QWizardPage* page_three;//第三页
    QWizardPage* page_four;//第四页

    QCheckBox *agree;//勾选则下一步可点击,否则下一步不可点击
    QLineEdit* location;//安装路径显示
    QProgressBar* progress;//安装进度条
    QTextEdit* filelist;//安装文件列表
    QComboBox* activation_mode;//选择激活方式

    QStackedWidget* activate_widget;//激活界面
    QListWidget* enter_widget;//登录界面
    QListWidget* serialnumber_widget;//序列号界面

    int progress_value = 0;

public:
    void createPage_one();
    void createPage_two();
    void createPage_three();
    void createPage_four();
    void findFile(QString filepath);
};
#endif // WIDGET_H

1.1.加入头文件说明

(1)个人心得
前段时间刚知道头文件不能互相包含之后,每次写代码我都会告诉自己,在哪用到的东西就在哪里添加,比如我在cpp文件里才会用到的东西,我不会在.h文件里加,我觉得这挺好的,比如我们写了两个类A和B,A的cpp文件中需要用到B的东西,那么我以前会把B的.h文件加到A中,这时如果B也需要A的,那就不能按照同样方法添加了,系统会报错的。所以在那用到在哪加头文件。
(2)变量说明
槽函数和相关的创建或者其他函数不用说,看名字就知道干嘛了,重点说明一下变量。

QPushButton* beginbutton;//点击显示安装向导界面
    QWizard* setupWizard;//安装向导界面
    QWizardPage* page_one;//第一页
    QWizardPage* page_two;//第二页
    QWizardPage* page_three;//第三页
    QWizardPage* page_four;//第四页

第一个就是主窗口的一个按钮,点击就进入安装向导对话框创建函数,并显示出来。
第二个就是主角,如果不给它添加任何页面的话,它本身就有一个页面的,可以测试测试。但添加页面之后,添加的第一个页面就是它刚显示出来的第一个页面,本来存在的那个页面就没有了。
剩下的很明了,就是要加到向导对话框的页面。

QCheckBox *agree;//勾选则下一步可点击,否则下一步不可点击
    QLineEdit* location;//安装路径显示
    QProgressBar* progress;//安装进度条
    QTextEdit* filelist;//安装文件列表
    QComboBox* activation_mode;//选择激活方式

这些都是在这过程中用到的东西,因为要在不同函数中用到这些按钮或者文本框,所以放在头文件中,没用的都作为局部变量了,写在这里纯粹占着茅坑不拉屎,都有注释,凑合着看,当然对应的头文件都要加上。
对于某些变量该放在哪里的问题,我们应该清楚,就是用到的就放在合适的地方,用不到的就做局部变量,因为用到的可能在很多函数里用到,所以得先想好哪些有用,哪些没有用。

2.简单的布局方式简说

2.1.水平布局QHBoxLayout

布局是按水平实现排列(就像你看到的这行字一行)。
使用方法:

QGroupBox* user = new QGroupBox("用户");
    QHBoxLayout* hlayout = new QHBoxLayout;
    QRadioButton* active_user = new QRadioButton("当前用户");
    QRadioButton* all_users = new QRadioButton("所有用户");
    hlayout->addWidget(active_user);
    hlayout->addWidget(all_users);
    user->setLayout(hlayout);

用户user是一个盒子,可以往里面加东西,当然也是一个小页面,我们可以为它添加布局方式。
布局时可以设置按钮所占位置的比例,以上添加后两个按钮占比是1:1的。在这里插入图片描述

    hlayout->addWidget(active_user,1);
    hlayout->addWidget(all_users,2);

如果我们这样添加,那么就是1:2,all_users按钮占两份,active_user按钮占一份。

2.2.垂直布局QVBoxLayout

和水平布局是同样的操作,不多说了,就是方向不同而已。如:
在这里插入图片描述
一个在上一个在下,设比例的方式也是一样的。

2.3.网格布局(栅格布局)QGridLayout

个人觉得这比较好用啊,具体的东西呢可以看看帮助文档。

void 
addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
void 
addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())

一般就用到这两个函数,而且不需要填那么多参数,比如第一个就这样用:

void addWidget(QWidget *widget, int row, int column)

第一个参数是你要加入的按钮,第二个是在哪行,第三个是在哪列。

void addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan,)

这个后两个参数是用来设置比例的,比如跨多少行,多少列,都可以设置。
具体的实战一下就明白了。
OK。

这篇关于第9篇 Qt实现安装向导对话框之代码布局篇(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!