实现一个简单的网格布局分布
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液晶显示没能实现信号连接