QT:容器窗口(父窗口)

来源:互联网 发布:时时彩巴丁算法 编辑:程序博客网 时间:2024/05/18 02:52

容器窗口(父窗口)与滑块

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 0
原创粉丝点击