第一章:Qt的概述 第二章:在Ubuntu编写第一个Qt程序 第三章:Qt的字符串和字符编码 第四章:Qt的信号和槽
Qt容器窗口(父窗口)
1、概念
创建组件时可以指定停靠的父窗口,如果指定了则会停靠在父窗口上,如果没有指定则会飘在外面形成独立的窗体
2、常用的父窗口类
QWidgetQMainWindow(主窗口,QWidget的子类)QDialog(对话框,QWdget的子类) 注意: QWidget和它的所有子类都可以作为父窗口,但是常用的父窗口类只有上面三个。
一般页面的功能比较复杂,需要使用多种组件的使用QMainWindow;而临时弹出的页面或简单逻辑的使用QDialog
3、QWidget中两个常用的函数
resize(int x, int y);//调整大小move(int x, int y);//调整位置
案例:创建一个Qt应用,包括一个标签和一个按钮,并停靠在一个父窗口上
#include
#include
#include
#include
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
//创建父窗口
QWidget parent;
//QMainWidow parent;
//QDialog parent;
//调整父窗口大小
parent.resize(800, 600);
//创建标签组件,并调整位置
QLabel label("A label", &parent);
label.move(50, 50);
//创建按钮组件,并调整位置和大小
QPushButton button("A button", &parent);
button.move(50, 150);
button.resize(120, 120);
//显示父窗口,上面包含的组件也会一起显示
parent.show();
return app.exec();
}
练习:事件同步,滑块和选值框保持同步运行
1)滑块(QSlider)
//构造函数(方向是水平还是垂直, 父窗口)
QSlider::QSlider(Qt::Orientation orientation, QWidget *parent = nullptr)
//设置滑块取值范围
setRange(int min, int max)
//滑块滑动时发送的信号,参数表示当前滑动到的位置
void valueChanged(int value) //signal函数
//设置滑块当前位置
void setValue(int) //slots函数
2)选值框(QSpinBox)
//构造函数
QSpinBox(QWidget *parent = nullptr)
//设置选值框取值范围
setRange(int minimum, int maximum)
//选值框改变时发送的信号,参数表示改变后的数值
void valueChanged(int value) //signal函数
//设置选值框的值
void setValue(int) //slots函数
#include
#include
#include
#include
int main(int argc, char** argv)
{
QApplication app(argc, argv);
//创建父窗口
QDialog parent;
parent.resize(220, 110);
//创建slider组件,并设置位置和取值范围
QSlider slider(Qt::Horizontal, &parent);
slider.move(22, 22);
slider.setRange(0, 150);
//创建spinBox组件,设置位置和取值范围
QSpinBox spinBox(&parent);
spinBox.move(122, 22);
spinBox.setRange(0, 150);
//spinBox.setSuffix(" years");//后缀
//显示父窗口,停靠在窗口上的组件也会一同显示
parent.show();
//滑块滑动,选值框随之改变
QObject::connect(&slider, SIGNAL(valueChanged(int)), &spinBox, SLOT(setValue(int)));
//选值框值该改变,滑块也随之滑动
QObject::connect(&spinBox, SIGNAL(valueChanged(int)), &slider, SLOT(setValue(int)));
return app.exec();
}