QT:容器窗口(父窗口)
容器窗口(父窗口)与滑块1. 如果一个组件创建时指定了父窗口,那么就将停靠在父窗口上,如果不指定父窗口,它就会飘在外面,形成独立的窗体。2. 常用父窗口类: QWidget // 默认大一些 QMainWindow // 默认小一些 QDialog // 对话框窗口,大一些,顶栏只有关闭按钮x
容器窗口(父窗口)与滑块
1. 如果一个组件创建时指定了父窗口,那么就将停靠在父窗口上,如果不指定父窗口,它就会飘在外面,形成独立的窗体。
2. 常用父窗口类:
QWidget // 默认大一些
QMainWindow // 默认小一些
QDialog // 对话框窗口,大一些,顶栏只有关闭按钮x
【注】QWidget子类可以作为父窗口类,但是常用的只有上面三个。
绝大多数图形组件都是QWidget的子类。
3. QWidget中两个常用的成员函数
1 )调整大小
void resize (int w, int h); // 参数单位为分辨率,w宽,h高
2 )移动位置
void move (int x, int y); // 参数单位为分辨率,相对于左上角
父窗口是相对屏幕左上角的分辨率
子窗口是相对容器(父)重口左上角的分辨率
/** 代码演示 - 父子窗口,标签组件/按钮组件,关闭功能 **/
#include <QApplication>
#include <QLabel>
#include <QPushButton>
#include <QWidget> // 父窗口
#include <QMainWindow>
#include <QDialog>
int main (int argc, char** argv) {
QApplication app (argc, argv);
// 创建父窗口对象
// QWidget parent;
// QMainWindow parent;
QDialog parent;
// 调整父窗口的位置
parent.move (100, 50);
// 调整父窗口的大小
parent.resize (400, 200);
// [标签组件]创建一个标签组件停靠在父窗口上 &parent
QLabel label ("我是快乐的子窗口!!", &parent);
// 调整label子窗口在父窗口的相对位置
label.move (120, 100);
// [按钮组建]创建一个按钮组件停靠在父窗口上 &parent
QPushButton button ("关闭", &parent);
// 调整按钮组件的位置
button.move (150, 150);
// 调整按钮的大小
button.resize (40, 40);
// 显示父窗口,所包含的组件窗口会一起显示
parent.show ();
// 点击[关闭]按钮关闭父窗口
QObject::connect (&button, SIGNAL (clicked ()),
&parent, SLOT (close ()));
return app.exec ();
}
《案例》事件同步
QSlider 滑块组件
QSlider(QWidget * parent = 0); // 构造滑块对象
QSlider(Qt::Orientation orientation, QWidget * parent = 0); // 同上
'parent':父窗口
'orientation':方向
Qt::Vertical 垂直(默认) Qt::Horizontal 水平
void setRange(int min, int max); // 设置滑动范围
void setPageStep(int); // 设置页的步距
void valueChanged(int value) [signals]; // 值改变信号
void setValue(int) [slots]; // 设置当前值
QSpinBox 微调框/选值框组件
QSpinBox(QWidget * parent = 0); // 构造选值框
'parent':父窗口
void setRange(int minimum, int maximum); // 设置选值范围(同滑动参数)
void valueChanged(int i) [signals]; // 值改变信号
void setValue(int val) [slots]; // 设置当前值
void setSuffix(const QString & suffix); // 设置显示后缀
/** 代码演示 - 事件同步 **/
#include <QApplication>
#include <QDialog>
#include <QSlider>
#include <QSpinBox>
int main (int argc, char** argv) {
QApplication app (argc, argv);
// 创建一个父窗口
QDialog dialog;
dialog.resize (300, 100);
// 创建滑块并停靠在父窗口上
QSlider slider (Qt::Horizontal, &dialog);
slider.move (20, 20); // 设置位置
slider.setRange (0, 100); // 设置取值范围
slider.setPageStep (10); // 设置页步距
// 创建选值框组件并停靠在父窗口上
QSpinBox spin (&dialog);
spin.move (120, 20);
spin.setRange (0, 100);
spin.setSuffix ("kg");
// 滑块的值改变,选值框也随之改变
QObject::connect (&slider, SIGNAL (valueChanged (int)),
&spin, SLOT (setValue (int)));
// 选值框的值改变,对应的滑块的值也随之改变
QObject::connect (&spin, SIGNAL (valueChanged (int)),
&slider, SLOT (setValue (int)));
dialog.show ();
return app.exec ();
}
更多推荐
所有评论(0)