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 // 运行。生成的可执行程序以工程名(文件夹名)命名

  1. Qt 的库都以 Q 开头
  2. main 必须声明入参 argc, argv 并传递给 QApplication 实例。否则编译报错:对成员‘exec’的请求出现在‘app’中,而后者具有非类类型‘QApplication()’
  3. Qt 中,widget 即组件,比如 button, menus, scroll bars, and frames 等。
  4. Qt 中,widget 可以嵌套,任何 widget 都可以做 window,通常使用 QMainWindow or a QDialog
  5. Qt 内置 webkit 引擎,支持 html 显示。
  6. 不需要调用 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的更多相关文章

  1. C++ GUI Programming with Qt4 笔记 -- chap2 QDialog

    以 finddialog 为例,介绍 QDialog.并对 Qt 的基本概念和技巧做了更进一步(chap1)的介绍. 1.MOC 扩展与signals–slots 机制 严格来说,Qt 开发,写的并不 ...

  2. 2018-12-09 疑似bug_中文代码示例之Programming in Scala笔记第九十章

    续前文: 中文代码示例之Programming in Scala笔记第七八章 源文档库: program-in-chinese/Programming_in_Scala_study_notes_zh ...

  3. 2018-11-27 中文代码示例之Programming in Scala笔记第七八章

    续前文: 中文代码示例之Programming in Scala学习笔记第二三章 中文代码示例之Programming in Scala笔记第四五六章. 同样仅节选有意思的例程部分作演示之用. 源文档 ...

  4. 2018-11-16 中文代码示例之Programming in Scala笔记第四五六章

    续前文: 中文代码示例之Programming in Scala学习笔记第二三章. 同样仅节选有意思的例程部分作演示之用. 源文档仍在: program-in-chinese/Programming_ ...

  5. 《UNIX-Shell编程24学时教程》读书笔记Chap1,2 Shell基础,脚本基础

    Chap1 Shell基础 知道该使用哪种命令是依赖于经验的.----惟手熟尔. 1.1 什么是命令 其实知道这些名词好像也没什么帮助,嘻嘻 1.2 什么是Shell 不同用户不同的提示符:不同的环境 ...

  6. Dynamic Programming 动态规划入门笔记

    算法导论笔记 programming 指的是一种表格法,并非编写计算机程序 动态规划与分治方法相似,都是通过组合子问题的解来求解原问题.但是分治法将问题划分为互不相交的子问题.而动态规划是应用与子问题 ...

  7. C++ Programming language读书笔记

    C语言,结构化程序设计.自顶向下.逐步求精及模块化的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序.选择.循环三种基本控制结构构造. 模块结构:"独立功能,单出.入口&quo ...

  8. OpenCV 2 Computer Vision Application Programming Cookbook读书笔记

    ### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...

  9. 九章算法系列(#4 Dynamic Programming)-课堂笔记

    前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...

随机推荐

  1. CentOS 6.4 安装 Transmission 2.76

    1.安装Transmission 首先打开Transmission下载页:http://www.transmissionbt.com/download/ ,点击CentOS下载项,会跳转到一个叫&qu ...

  2. c语言 字符版 简易2048

    花了两个多小时,用最蠢的方法写的……最简陋版…… 还不确定这么写逻辑对不对…… #include <iostream> #include <cstdio> #include & ...

  3. 详细讲解Hadoop源码阅读工程(以hadoop-2.6.0-src.tar.gz和hadoop-2.6.0-cdh5.4.5-src.tar.gz为代表)

    首先,说的是,本人到现在为止,已经玩过.                   对于,这样的软件,博友,可以去看我博客的相关博文.在此,不一一赘述! Eclipse *版本 Eclipse *下载 Jd ...

  4. java 日志技术汇总(log4j , Commons-logging,.....)

    前言 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一 在系列一 中, 有一个问题一直没有解决,就是部署到weblogic 中应用程序如何通过log4j写日志到文件中? 这里仅 ...

  5. SSM框架整合基本操作

    1.首先导入各种需要的配置包,在这里个人的习惯就是先导入mybatis相关包,然后通过编程软件集成一个spring3.0或者spring3.1进来并选择里面相应的包,这样就不需要我们自己去导入相应的s ...

  6. easyui datagrid用formtater的问题

    当value是一个字符串是直接使用value会提示value没有定义,这时需要转换下value,用""+value来替换就可以了.

  7. Java中Map的使用

    Map以按键/数值对的形式存储数据,和数组很类似,在数组中存在的索引,它们本身也是对象.       Map的接口       Map---实现Map       Map.Entry--Map的内部类 ...

  8. 理解OAuth 2.0--转

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版. 本文对OAuth 2.0的设计思路和运行流程,做一个简明通俗的解释,主要参考材料为R ...

  9. javascript进击(四)HTML DOM

    HTML DOM (文档对象模型) 什么是DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准. W3C 文档对象模型 (DOM) 是中立于平台和语 ...

  10. web项目设计与开发——DBHelper

    学习web项目设计与开发主要是在上学期web程序开发的基础上添上了思想和更深的理解. 在学习之前,我们需要下载好相关的软件——MyEclipse以及配置文件JDK.tomcat.再添加除MyEclip ...