QT第4天:OldBull,How old are you?
一个窗口、窗口部件和布局的例子:
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
{
QApplication app(argc, argv);
/* 新建一个窗口对象,它是这个程序的主窗口 */
QWidget *window = new QWidget;
/* 设置窗口标题,此处标题设为中文时显示会乱码,作为遗留问题以后解决 */
window->setWindowTitle("OldBull, How old are you?");
QWidget *window = new QWidget;
/* 设置窗口标题,此处标题设为中文时显示会乱码,作为遗留问题以后解决 */
window->setWindowTitle("OldBull, How old are you?");
/* 创建一个微调控件 */
QSpinBox *spinBox = new QSpinBox;
/* 创建一个滑块控件,水平方向的 */
QSlider *slider = new QSlider(Qt::Horizontal);
/* 设置滑块和微调控件的值范围为0~1000 */
spinBox->setRange(0, 1000);
slider->setRange(0, 1000);
QSpinBox *spinBox = new QSpinBox;
/* 创建一个滑块控件,水平方向的 */
QSlider *slider = new QSlider(Qt::Horizontal);
/* 设置滑块和微调控件的值范围为0~1000 */
spinBox->setRange(0, 1000);
slider->setRange(0, 1000);
/* 将spinBox的值变化的事件与slider的信号槽setValue连接起来,
* 当spinBox中的值有变化时,slider的值会跟着一起变
*/
QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
/* 将slider的值变化的事件与spinBox的信号槽setValue连接起来,
* 当slider的值有变化时,spinBox的值会跟着一起变
* 此处二者不会造成死循环的
*/
QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
/* 设置spinBox的值为999 */
spinBox->setValue(999);
* 当spinBox中的值有变化时,slider的值会跟着一起变
*/
QObject::connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int)));
/* 将slider的值变化的事件与spinBox的信号槽setValue连接起来,
* 当slider的值有变化时,spinBox的值会跟着一起变
* 此处二者不会造成死循环的
*/
QObject::connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int)));
/* 设置spinBox的值为999 */
spinBox->setValue(999);
/* 创建一个布局管理器,布局管理器能够对其所负责窗口部件的尺寸大小和位置进行设置的对象
* QT中三类布局管理器:
* QHBoxLayout: 水平布局管理器,在水平方向上排列窗口部件
* QVBoxLayout: 垂直布局管理器,在竖直方向上排列窗口部件
* QGridLayout: 网络布局管理器,把各部件排列在一个网格中
* QT程序员最常使用的方式是先申明所需的窗口部件(如按钮,滑块,微调,输入框。。。。),
* 然后设置它们所具备的属性,最后把这些部件添加到布局中,布局会自动设置它们的位置和大小
*/
QHBoxLayout *layout = new QHBoxLayout;
/*将spinBox和slider添加到布局管理器中 */
layout->addWidget(spinBox);
layout->addWidget(slider);
/* 设置window的布局管理器为layout,默认,它会成为上面两个窗口部件的父窗口 */
window->setLayout(layout);
* QT中三类布局管理器:
* QHBoxLayout: 水平布局管理器,在水平方向上排列窗口部件
* QVBoxLayout: 垂直布局管理器,在竖直方向上排列窗口部件
* QGridLayout: 网络布局管理器,把各部件排列在一个网格中
* QT程序员最常使用的方式是先申明所需的窗口部件(如按钮,滑块,微调,输入框。。。。),
* 然后设置它们所具备的属性,最后把这些部件添加到布局中,布局会自动设置它们的位置和大小
*/
QHBoxLayout *layout = new QHBoxLayout;
/*将spinBox和slider添加到布局管理器中 */
layout->addWidget(spinBox);
layout->addWidget(slider);
/* 设置window的布局管理器为layout,默认,它会成为上面两个窗口部件的父窗口 */
window->setLayout(layout);
window->show();
return app.exec();
}
将布局改为垂直布局的效果:
}
将布局改为垂直布局的效果: