第一章 Qt入门

2017/10/20

HelloZEX


感谢奇趣科技公司(Trolltech,Qt门户:https://www.qt.io)为我们提供了Qt(一种图形用户界面框架)。利用Qt提供的C++应用程序开发框架,可以轻松实现“一次编写,随处编译”跨平台解决方案。Qt5相对于4修改最明显的就是Qt的GUI的模块的修改,而且Qt5溢出了Qt OpenGL模块,重新复合在Qt Gu中了,Qt5直接内置JSON解析。学习中可以用VS2015+Qt5.7(我的选择,但是部分还是使用Qt4的方法)或者VS2010+Qt4.8.4+add-in。Qt帮助文档MSDN和Assist简直神器,要好好利用。

笔记不完全按照GUI4这本书的结构顺序,根据学习进程做适当修改。暂时不对安装环境配置作解释。

一、第一个程序  HelloZEX

#include <QtWidgets/QApplication>
#include <QLabel>
#include <QPushButton>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QLabel *label = new QLabel("HelloZEX");
	label->show();

	QPushButton *pushButton = new QPushButton("HelloZEX");
	pushButton->show();

	return a.exec();
}

闯进了一个Qapplication对象,用来管理整个应用程序框架的资源。创建一个QLabel和QPushButton上面默认显示“HelloZEX”字符串。 return将用用程序的控制权专递给Qt

,此时程序会进入时间循环状态。


二、信号槽建立连接

信号槽机制是Qt使用的精髓之一,可以让编程人员将互不相关的对象绑定在一起,实现随想之间的通信。与Windows消息机制类似,基于回调函数,用信号与槽代替函数指针,是程序更加安全简洁。

#include <QtWidgets/QApplication>
#include <QLabel>
#include <QPushButton>

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	QLabel *label = new QLabel("Label");
	QPushButton *pushButton = new QPushButton("HelloZEX");
	QObject::connect(pushButton, SIGNAL(clicked()), label, SLOT(show()));
	pushButton->show();
	return a.exec();
}

信号槽使用格式为:

QObject::connect(pushButton, SIGNAL(clicked()), label, SLOT(show()));

参数分别为 谁发的消息+发的什么消息+谁接收的消息+做出什么反应,如果消息中含有参数,那么SIGNAL和SLOT参数必须相同。


三、窗口部件的布局

有三个主要的布局管理器:QHBoxLayout + QVBoxLayout + QGridLayout。如果不需要new动态的窗口部件使用Qt Designer绘制会更加方便。

#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);

	QWidget *window = new QWidget;
	window->setWindowTitle("Enter Your Age");

	QSpinBox *spinBox = new QSpinBox;
	QSlider *slider = new QSlider(Qt::Horizontal);
	spinBox->setRange(0, 130);
	slider->setRange(0, 130);

	QObject::connect(spinBox, SIGNAL(valueChanged(int)),
		slider, SLOT(setValue(int)));
	QObject::connect(slider, SIGNAL(valueChanged(int)),
		spinBox, SLOT(setValue(int)));
	spinBox->setValue(35);

	QHBoxLayout *layout = new QHBoxLayout;
	layout->addWidget(spinBox);
	layout->addWidget(slider);
	window->setLayout(layout);

	window->show();

	return app.exec();
}


四、使用参考文档

你不太可能记住所有的类和函数,所以使用一些在线参考文档、Qt助手或者论坛会事半功倍=-=。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值