QT-纯代码控件-QGridLayout(网格布局)

实现一个简单的网格布局分布

1.新建一个无ui界面的工程,其基类为dialog

2.代码实现

dialog.h和main.cpp不做改变

dialog.cpp

#include "dialog.h"
#include <QLabel>           //标签控件
#include <QGridLayout>      //网格布局
#include <QPushButton>      //按钮控件
#include <QDial>            //表盘控件
#include <QSlider>          //滑杆控件
#include <QLCDNumber>       //lcd控件


Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    //新建以下所示控件
    QPushButton * m_quitpushbutton = new QPushButton("退出",this);
    QLabel * m_cenlabel = new QLabel("摄氏温度",this);
    QLabel * m_fahlabel = new QLabel("华氏温度",this);
    m_fahlabel->setAlignment(Qt::AlignCenter);
    QLabel * m_label = new QLabel("0",this);
    QSlider * m_slider = new QSlider(this);
    QLCDNumber * m_lcdnumber = new QLCDNumber(this);
    QDial * m_dial = new QDial(this);
    QGridLayout * layout = new QGridLayout(this);

    layout->setSpacing(10);     //设置单元间隔
    layout->setMargin(20);      //设置边距
    //添加quit按钮控件到layout中去,起始于(0,0),横跨三个单元格 即colspan = 3
    layout->addWidget(m_quitpushbutton,0,0,1,3);
    //添加cen标签到layout中去,起始于(1,0),横跨两个单元格 即colspan = 2
    layout->addWidget(m_cenlabel,1,0,1,2);
    //添加fah标签到layout中去,起始于(1,2),占一个单元,不设rowspan和colspan
    layout->addWidget(m_fahlabel,1,2);
    //添加"0"lab标签到layout中去,起始于(1,2),横跨两个单元格,即rowspan = 2
    layout->addWidget(m_label,2,0,2,1);
    //添加滑竿到layout中去。起始于(2,1),横跨两个单元格
    layout->addWidget(m_slider,2,1,2,1);
    //添加液晶数字到layout中去,起始于(2,2),占用一个单元格
    layout->addWidget(m_lcdnumber,2,2);
    //添加转盘道layout中去,起始于(3,2),占用一个单元格
    layout->addWidget(m_dial,3,2);
    //添加layout到窗口中去
    this->setLayout(layout); 
}

Dialog::~Dialog()
{

}

3.效果展示

在这里插入图片描述

4.不足

1.这里没有将slider控件和label控件的信号与槽连接起来,因为没找到相应的槽函数,故无法拖动显示值
2.表盘控件dialog和lcd液晶显示没能实现信号连接

发布了43 篇原创文章 · 获赞 7 · 访问量 9053

猜你喜欢

转载自blog.csdn.net/qq_41488943/article/details/96429982