QT学习(三)
首先整理一下编码的方法。对于一个待解决的问题,首先应该将大问题分解成小问题,将小问题划分为小小问题。。。
然后再进行类的抽象,将划分成的问题和类进行对应。然后再对划分的小。。问题进行具体的处理分析,划分出步骤进行接口的处理。最后进行编码。
编码是首先在.h文件中进行类的定义,类中函数的定义,该类中用到的变量的定义;然后再在.c的文件中进行类的具体实现。注意还要将一些宏的定义单独定义在一个头文件中。在构造函数中进行变量的初始化操作,界面初始化函数的调用和信号槽的连接(这里指的是QT这样用)。在析构函数中将系统不会自动释放的对象和资源进行释放。最后进行具体函数的实现。
QT学习(三)
上一章学习了信号槽机制,这一章来进行具体的应用。
创建一个简单的窗口。
test.h文件:
- #ifndef TEST_H
- #define TEST_H
- #include <QtGui/QMainWindow>
- #include "ui_test.h"
- #include <QLabel>
- #include <QPushButton>
- #include <QHBoxLayout>
- class test : public QMainWindow
- {
- Q_OBJECT
- public:
- test(QWidget *parent = 0, Qt::WFlags flags = 0);
- ~test();
- private:
- void initWidget();
- void show();
- QLabel *label;
- QPushButton *pushBtn;
- QWidget *window;
- QHBoxLayout *layout;
- };
- #endif // TEST_H
test.cpp文件:
- #include "test.h"
- test::test(QWidget *parent, Qt::WFlags flags)
- : QMainWindow(parent, flags)
- {
- label=new QLabel("nihao");
- pushBtn=new QPushButton("ok");
- window=new QWidget();
- layout=new QHBoxLayout();
- connect(pushBtn,SIGNAL(click()),this,SLOT(close()));
- initWidget();
- }
- test::~test()
- {
- }
- void test::initWidget()
- {
- window->setWindowTitle("aaaaaaaa");
- layout->addWidget(label);
- layout->addWidget(pushBtn);
- window->setLayout(layout);
- }
- void test::show()
- {
- window->show();
- }
main.cpp中:
- #include "test.h"
- #include <QtGui/QApplication>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- test w;
- return a.exec();
- }
以上的代码实现类一个简单的窗口。
其实所有的窗口都是基于这样一个简单的窗口的拓展,可能会因为功能的需要去继承原有的控件类进行新的开发,进行不一样的布局管理,单不管怎样的去改变,都是基于这样一个消息槽机制和布局方法来实现的,只要勤加练习,敢想敢做就一定会在QT的领域中有一番作为的。
以后全都是一些例子和实现。
QT学习(三)的更多相关文章
- qt学习(三) qt布局
使用横向与竖向.网格三种布局嵌套使用后可以组合出很复杂的界面. 这里向大家推荐这篇博客 http://www.cnblogs.com/Bonker/p/3454956.html 我这里使用布局做了一个 ...
- qt学习(三):鼠标图标改变
qt学习 (三):鼠标图标改变 当你进入一个美好的qt软件场景,比如游戏,电脑的黑白图标会让程序逊色不少, 1改图标要加光标的头文件, 2 载入光标图, 3 再设置改光标就可以了 1在头文件中加 #i ...
- Qt学习 之 多线程程序设计(QT通过三种形式提供了对线程的支持)
QT通过三种形式提供了对线程的支持.它们分别是, 一.平台无关的线程类 二.线程安全的事件投递 三.跨线程的信号-槽连接. 这使得开发轻巧的多线程Qt程序更为容易,并能充分利用多处理器机器的优势.多线 ...
- QT学习第1天
QT学习第一天 坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...
- QT的三种协议说明
关于Qt的三种协议以及是否收费,有以下引文: 引文一: 最近一直在学习 Qt.Qt 有两个许可证:LGPL 和商业协议.这两个协议在现在的 Qt 版本中的代码是完全一致的(潜在含义是,Qt 的早期版本 ...
- QT学习之菜单栏与工具栏
QT学习之菜单栏与工具栏 目录 简单菜单栏 多级菜单栏 上下菜单栏 工具栏 简单菜单栏 程序示例 from PyQt5.QtWidgets import QApplication, QMainWind ...
- QT学习之第一个程序
QT学习之第一个程序 目录 手动创建主窗口 居中显示 添加窗口图标 显示提示文本 Message Box的应用 手动连接信号与槽 手动创建主窗口 窗口类型 QMainWindow: 可以包含菜单栏.工 ...
- Qt学习之信号与槽(一)
Qt学习之信号与槽(一) 目录 QT的信号与槽机制 在窗口的UI设计中操作添加信号和槽 QT的信号与槽机制 QT的两种机制 在Qt和PyQt中有两种通信机制: 低级事件处理机制(low-l ...
- Qt 学习之路 2(73):Qt 线程相关类
Home / Qt 学习之路 2 / Qt 学习之路 2(73):Qt 线程相关类 Qt 学习之路 2(73):Qt 线程相关类 豆子 2013年11月26日 Qt 学习之路 2 7条评论 希 ...
随机推荐
- VisionPro · C# · 加载与保存取像工具
VisionPro 项目程序设计,取像工具可被包含在工具包内被调用,一般,为了满足程序取像可以实现单次取像,循环取像,实时取像等多方面应用,会将取像工具独立打包. 加载代码: 1 using Syst ...
- 从Hadder看蛋白质分子中的加氢算法
技术背景 PDB(Protein Data Bank)是一种最常用于存储蛋白质结构的文件.而我们在研究蛋白质构象时,往往更多的是考虑其骨架,因此在很多pdb文件中直接去掉了氢原子.但是在我们构建蛋白质 ...
- Oracle 创建表空间及用户授权、dmp数据导入、表空间、用户删除
1.创建表空间 // 创建表空间 物理位置为'C:\app\admin\oradata\NETHRA\NETHRA.DBF',初始大小100M,当空间不足时自动扩展步长为10M create tabl ...
- HashMap的实现原理?如何保证HashMap线程安全?
A:HashMap简单说就是它根据建的hashcode值存储数据的,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历的顺序是不确定的. B:HashMap基于哈希表,底层结构由数组来实 ...
- 【时序数据库InfluxDB】Windows环境下配置InfluxDB+数据可视化,以及使用 C#进行简单操作的代码实例
前言:如题.直接上手撸,附带各种截图,就不做介绍了. 1.influxDB的官网下载地址 https://portal.influxdata.com/downloads/ 打开以后,如下图所示,可以 ...
- 生成RSA密钥的方法[转载]
openssl genrsa -des3 -out privkey.pem 2048 这个命令会生成一个2048位的密钥,同时有一个des3方法加密的密码,如果你不想要每次都输入密码,可以改成(测试常 ...
- javaWeb,web服务器
一. 1.ASP 国内最早最流行的语言就是ASP:微软研发 在HTML中嵌套了VB脚本,ASP+COM(网页元素) 在ASP开发中,基本一个业务就有几千行代码,页面机器混乱 维护成本高 <h1& ...
- day06 Socket_线程API_线程并发安全
使用多线程实现多客户端连接服务端 流程图 服务端代码改造: package socket; import java.io.BufferedReader; import java.io.IOExcept ...
- Note -「模拟退火」
随机化算法属于省选芝士体系 0x01 前置芝士 你只需要会 rand 就可以啦! 当然如果你想理解的更透彻也可以先看看 爬山算法 0x02 关于退火 退火是一种金属热处理工艺,指的是将金属缓慢加热到一 ...
- CF1656D K-good
题意: 给定一个整数 \(n\),请找出一个大于等于 \(2\) 的整数 \(k\),使得 \(n\) 可以表示成 \(k\) 个除以 \(k\) 的余数互不相同的数之和. 注意\(k\)个除以 \( ...