学习Qt,Getting started

在界面的设计中。如今用的比較多的是Qt和WPF(C#),曾经的MFC已出现衰老趋势。本人近期在学习Qt,认为非常实用,遂决定将学习历程记录下来。也许有感于后之来者。不亦乐哉。

一、Hello Qt

#include "try_qt.h"
#include <QtGui/QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	QLabel *label = new QLabel("Hello Qt!");
	label->show();
	return app.exec();
}
	
QApplication app(argc, argv);
创建一个QApplication的对象app,管理程序的资源。

QLabel *label = new QLabel("Hello Qt!");
创建一个QLabel的widget,用于显示括号的内容。

label->show();
使label的内容显示。

return app.exec();
退出Qt,操作系统对资源进行又一次分配。

二、QPushButton

#include "try_qt.h"
#include <QtGui/QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	QPushButton *button = new QPushButton("Quit");
	QObject::connect(button, SIGNAL(clicked()),
		&app, SLOT(quit()));
	button->show();
	return app.exec();
}
	

Qt的widgets发出信号,表示用户的行为后者状态的改变。当用户点击button时。QPushButton会发出clicked()信号。一个信号能够和一个函数关联起来,当一个信号被发送时。其相应的slot自己主动运行。

QObject::connect(button, SIGNAL(clicked()),
		&app, SLOT(quit()));
当用户点击button时,QPushButton会发出clicked()信号,导致其关联的quit()函数自己主动运行。



三、widgets布局

#include "try_qt.h"
#include <QtGui/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();
}
该程序由三个widgets组成,各自是QSpinBox。QSlider和QWidget。QWidget是程序的主窗体,子窗体是QSpinBox和QSlider。

<span style="white-space:pre">	</span>QWidget *window = new QWidget;
	window->setWindowTitle("Enter your age");
建立QWidget作为程序的主窗体。调用setWindowTitle()设置主窗体的名称。

	QSpinBox *spinBox = new QSpinBox;
	QSlider *slider = new QSlider(Qt::Horizontal);
	spinBox->setRange(0,130);
	slider->setRange(0,130);
创建QSpinBox和QSlider。并设置他们的有效范围
<pre name="code" class="cpp">	QObject::connect(spinBox,SIGNAL(valueChanged(int)),
		slider,SLOT(setValue(int)));
	QObject::connect(slider,SIGNAL(valueChanged(int)),
		spinBox,SLOT(setValue(int)));
确保spin-box和slider是同步的。无论是信号valueChanged(int)发出还是setValue(int)对slot的值进行设置,他们的值都是一样的。


	spinBox->setValue(35);
设置spinBox的值为35。

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

使用布局管理器layout,布局spinBox和slider。调用QWidget::setLayout将布局管理器安装在窗体上。





原文地址:https://www.cnblogs.com/llguanli/p/6814371.html