C++ GUI Programming with Qt4 笔记 -- chap1
1. Hello Qt
#include <QApplication>
#include <QLabel> int main(int argc, char *argv[]){ QApplication app(argc, argv);
QLabel *label = new QLabel("Hello, <h2><font color=red>Vivian</font></h2>!");
label->show();
return app.exec();
}
运行
qmake -project // 生成 .pro
qmake // 生成 Makefile
make // 编译
./project_name // 运行。生成的可执行程序以工程名(文件夹名)命名

- Qt 的库都以 Q 开头
- main 必须声明入参 argc, argv 并传递给 QApplication 实例。否则编译报错:对成员‘exec’的请求出现在‘app’中,而后者具有非类类型‘QApplication()’
- Qt 中,widget 即组件,比如 button, menus, scroll bars, and frames 等。
- Qt 中,widget 可以嵌套,任何 widget 都可以做 window,通常使用 QMainWindow or a QDialog
- Qt 内置 webkit 引擎,支持 html 显示。
- 不需要调用 delete 回收内存,因为内存泄漏很小,程序结束时操作系统会回收。
2. 事件处理 SIGNAL / SLOT
#include <QApplication>
#include <QPushButton> int main(int argc, char *argv[]){ QApplication app(argc, argv);
QPushButton *btn= new QPushButton("Quit");
QObject::connect(btn, SIGNAL(clicked()), &app, SLOT(quit()));
btn->show();
return app.exec();
}
Qt 的事件处理,使用 SIGNAL / SLOT 机制。
SIGNAL 与 SLAT 是 2 个宏,前者生成事件消息,后者响应事件消息。
connect 方法接受 4 个参数。源对象、事件,目标对象,处理方法。
3. 布局
与其他 GUI 一样,水平 / 垂直 / 格子 3 种布局方式
- QHBoxLayout lays out widgets horizontally from left to right (right to left for some cultures).
- QVBoxLayout lays out widgets vertically from top to bottom.
- QGridLayout lays out widgets in a grid.
调用 setLayout 时,会把 layout 内已添加的节点设置为当前节点的字节点。
所以,如果一个节点要添加到 layout 中,则不需要指定 parent
#include <QApplication>
#include <QHBoxLayout>
#include <QSpinBox>
#include <QSlider> int main(int argc, char *argv[]){ QApplication app(argc, argv);
QWidget *window = new QWidget;
window->setWindowTitle("Enter your Age"); QSpinBox *spinBox = new QSpinBox;
QSlider *slder = new QSlider(Qt::Horizontal);
spinBox->setRange(, );
slder->setRange(, ); QObject::connect(spinBox, SIGNAL(valueChanged(int)), slder, SLOT(setValue(int)));
QObject::connect(slder, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); spinBox->setValue(); QHBoxLayout *layout = new QHBoxLayout;
layout->addWidget(spinBox);
layout->addWidget(slder);
window->setLayout(layout);
window->show(); return app.exec();
}

4. Qt 库 class 继承关系

C++ GUI Programming with Qt4 笔记 -- chap1的更多相关文章
- C++ GUI Programming with Qt4 笔记 -- chap2 QDialog
以 finddialog 为例,介绍 QDialog.并对 Qt 的基本概念和技巧做了更进一步(chap1)的介绍. 1.MOC 扩展与signals–slots 机制 严格来说,Qt 开发,写的并不 ...
- 2018-12-09 疑似bug_中文代码示例之Programming in Scala笔记第九十章
续前文: 中文代码示例之Programming in Scala笔记第七八章 源文档库: program-in-chinese/Programming_in_Scala_study_notes_zh ...
- 2018-11-27 中文代码示例之Programming in Scala笔记第七八章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章 中文代码示例之Programming in Scala笔记第四五六章. 同样仅节选有意思的例程部分作演示之用. 源文档 ...
- 2018-11-16 中文代码示例之Programming in Scala笔记第四五六章
续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_ ...
- 《UNIX-Shell编程24学时教程》读书笔记Chap1,2 Shell基础,脚本基础
Chap1 Shell基础 知道该使用哪种命令是依赖于经验的.----惟手熟尔. 1.1 什么是命令 其实知道这些名词好像也没什么帮助,嘻嘻 1.2 什么是Shell 不同用户不同的提示符:不同的环境 ...
- Dynamic Programming 动态规划入门笔记
算法导论笔记 programming 指的是一种表格法,并非编写计算机程序 动态规划与分治方法相似,都是通过组合子问题的解来求解原问题.但是分治法将问题划分为互不相交的子问题.而动态规划是应用与子问题 ...
- C++ Programming language读书笔记
C语言,结构化程序设计.自顶向下.逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序.选择.循环三种基本控制结构构造. 模块结构:"独立功能,单出.入口&quo ...
- OpenCV 2 Computer Vision Application Programming Cookbook读书笔记
### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...
- 九章算法系列(#4 Dynamic Programming)-课堂笔记
前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...
随机推荐
- 关于学习Scala语言的一些感悟
进入话题! 我们知道哈,Spark源码采用Scala语言编写,那么阅读Spark源码之前,是否一定先学Scala呢? 我个人认为,不必,只要我们有一些java或c++编写语言的基础,就可以看Spaar ...
- [置顶] linux 解压版安装
1:下载mysql解压版包去官网下载www.mysq.com 下载.下载linux通用版本就好了 2.基本配置 首先,我们准备好Linux环境,我们使用CentOS 5.8进行试验安装.第一步,我们需 ...
- iOS中的字符串扫描类NSScanner
新建一个Category,命名为UIColor+Hex,表示UIColor支持十六进制Hex颜色设置. UIColor+Hex.h文件, #import <UIKit/UIKit.h> # ...
- careercup-递归和动态规划 9.5
9.5 编写一个方法,确定某字符串的所有排列组合. 类似leetcode:Permutations 解法: 跟许多递归问题一样,简单构造法非常管用.假设有个字符串S,以字符序列a1a2a...an表示 ...
- Java基础知识强化之IO流笔记58:内存操作流
1. 内存操作流: 用来操作处理临时存储的信息的. (1)操作字节数组: ByteArrayInputStream ByteArrayOutputStream 代码示例: package cn.itc ...
- ASP.NET 开发人员应该知道的8个网站
1.CodeProject http://www.codeproject.com/ 2.DotNetNuke 3.4GuysFromRolla 4.DevSource 5.DevX http://ww ...
- 两种JSON数据类型的解析
son数据格式解析我自己分为两种: 一种是普通的,一种是带有数组形式的: 普通形式的:服务器端返回的json数据格式如下: {"userbean":{"Uid" ...
- jQuery DOM XSS漏洞
jQuery DOM XSS漏洞http://automationqa.com/forum.php?mod=viewthread&tid=2943&fromuid=21
- PowerDesigner使用详解
PowerDesign高级应用编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等,具体的可以参考C:\Program Files\Sybase\PowerDesigner 9\VB ...
- Redhat YUM U盘源配置
Redhat YUM U盘源配置 1)在U盘创建目录 #mkdir /yum/Server 并从光盘Server.Packages 目录的所有文件拷贝到/yum/Server 2)安装 creater ...