Qt-组装丰富的积木
来源:互联网 发布:网络摄像头的安装方法 编辑:程序博客网 时间:2024/05/16 11:01
组装丰富的积木
把两个窗口部件封装成一个新的组件,将这个新的组建填充到4*4的网格布局里,并且最上方有quit按钮。
#include "mainwindow.h"#include <QApplication>#include <QPushButton>#include <QFont>#include <QSlider>#include <QLCDNumber>#include <QVBoxLayout>#include <QGridLayout>class LCDRange:public QWidget{ public: LCDRange(QWidget *parent = 0);};LCDRange::LCDRange(QWidget *parent):QWidget(parent){ QLCDNumber *lcd = new QLCDNumber(2); lcd->setSegmentStyle(QLCDNumber::Filled); QSlider *slider = new QSlider(Qt::Horizontal); slider->setRange(0,99); slider->setValue(0); connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int))); QVBoxLayout *part = new QVBoxLayout; part->addWidget(lcd); part->addWidget(slider); setLayout(part);}class MyWidget:public QWidget{public: MyWidget(QWidget *parent = 0);};MyWidget::MyWidget(QWidget *parent):QWidget(parent){ QPushButton *quit = new QPushButton("Quit"); quit->setFont(QFont("Times",18,QFont::Bold)); connect(quit,SIGNAL(clicked()),qApp,SLOT(quit())); QGridLayout *grid = new QGridLayout; for(int r = 0; r < 4; r++) for(int c = 0; c < 4; c++) { LCDRange *lcdRange = new LCDRange; grid->addWidget(lcdRange, r, c); } QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(quit); layout->addLayout(grid); setLayout(layout);}int main(int argc, char *argv[]){ QApplication a(argc, argv); MyWidget w; w.show(); return a.exec();}
结果截图:
每一个组件都是单独的,比如(0,0)位置的数值改变不影响其他区域。
遇到问题:不显示4*4组件。
解决方法:在LCDRange类中创建好slider和lcd后就应该将它们放在QVBoxLayout布局中,即垂直布局中。这样,在新建LCDRange类的对象时,每一个对象都有slider和lcd,代码如下。
QVBoxLayout *part = new QVBoxLayout;part->addWidget(lcd);part->addWidget(slider);setLayout(part);
如果缺少这一步,最后什么都不显示:
所以,如果同时存在不只一个窗口部件(例如两个按钮enter,quit)那么一定要将它们封装到QVBoxLayout垂直布局中,才可以同时显示,否则显示后面的那一个。
int main(int argc, char *argv[]){ QApplication a(argc, argv); QWidget box; box.resize(200,120); //QVBoxLayout layout; QPushButton quit("Quit",&box); quit.setFont(QFont("Times",18,QFont::Bold)); QObject::connect(&quit,SIGNAL(clicked()),&a,SLOT(quit())); QPushButton enter("Enter",&box); enter.setFont(QFont("Times",18,QFont::Bold)); /*layout.addWidget(&quit); layout.addWidget(&enter); box.setLayout(&layout);*/ box.show(); return a.exec();}
结果截图:
在每个组件中显示不同的数或者随机数。
#define Random(x) (rand()%x)QSlider *slider = new QSlider(Qt::Horizontal);slider->setRange(0,99);connect(slider,SIGNAL(valueChanged(int)),lcd,SLOT(display(int)));slider->setValue(Random(99));
结果截图:
阅读全文
0 0
- Qt组装丰富的积木
- Qt-组装丰富的积木
- QT学习6:组装丰富的积木!
- Qt教程6--组装丰富的积木--窗口中的窗口
- Qt教程一 —— 第六章:组装丰富的积木!
- Qt-组装积木
- QT学习5:组装积木
- Qt教程5--组装积木--信号-槽机制
- Qt教程一 —— 第五章:组装积木
- 丰富的
- Qt入门(17)——组装复杂的控件
- 玩积木的程序员
- 玩积木的程序员
- 玩积木的程序员
- 玩积木的程序员
- 玩积木的程序员
- 玩积木的程序员
- 玩积木的程序员
- angular中不同控制器之间的通信方式
- 《HTTP权威指南》学习笔记(0)前言、目录(关键词:计算机网络/HTTP)
- DBMS_MEDATA.get_ddl查看表,索引,表空间 定义
- Bellmam-Ford 算法
- Java 单列集合Set及其子实现类
- Qt-组装丰富的积木
- 文件下载
- PHP外汇CRM客户管理系统源码
- 决斗场
- Python学习(9)--for和while循环
- Mac 下安装Atom插件
- word文档技巧~
- 包装类之Character源码简析
- 字符串匹配的KMP算法