• qt坐标系统与布局的简单入门


    

    qt坐标系统

    qt坐标系统比較简单

    button.setGeometry(20,20,100,100);

    上面的代码把button显示为父窗体的20,20处宽度为100,高度为100

    接下去是布局

    qt里面布局须要增加<QLayout.h>这个头文件。

    qt里面垂直布局

    qt里面的垂直布局须要导入<QVBoxLayout.h>这个头文件。

    qt里面的水平布局须要导入<QHBoxLayout.h>这个头文件。

    以下是是一段布局的代码

    QHBoxLayout layout;
    layout.addStretch(1);
    layout.addWidget(&button,1);
    layout.addSpacing(50);
    layout.addWidget(&edit,1);
    layout.addStretch(1);

    当中我们首先创建了一个QHBoxLayout这个类。

    然后我们像左边增加一个比重为1的弹簧。右边增加一个比重为一的弹簧。中间用50个像素点隔开。

    弹簧的目的就是为了固定(stretch设置为0的元素是固定的,而stretch设置为1的元素是能够自由拖拉的),所以增加了弹簧后,左边的和右边都是能够被拖动的。而中间的button和空格是固定不动的。

    以下是详细的显示效果

    接下去我们介绍栅格布局

    qt里面用栅格布局我们得用<QGridLayout.h>这个头文件下的QGridLayout这个类。

    以下是一段代码

    QGridLayout layout;
    layout.addWidget(&button,0,0);
    layout.addWidget(&edit,0,1);
    layout.addWidget(new QPushButton("a"),1,0);
    layout.addWidget(new QPushButton("b"),1,1);
    layout.addWidget(new QPushButton("c"),2,0,1,2);
    layout.setRowStretch(3,1);
    layout.setColumnStretch(2,1);

    在这里我们在布局里面增加了5个窗体。

    4个button,1个输入框。

    最右边是一个列弹簧。最以下是一个行弹簧。

    voidaddWidget(QWidget*,introw,intcolumn,introwSpan,intcolumnSpan,Qt::Alignment=0);

    这是QGridLayout里面addWidgets这个控件的函数首部,我们它能够设置窗体所在的行列还能够设置窗体的跨度。

    以下是显示效果

    总的一个代码

    #include <QApplication>
    #include <QWidget>
    #include <QPushButton>
    #include <QLayout>
    #include <QLineEdit>
    #include <QHBoxLayout>
    #include <QGridLayout>
    
    int main(int argc,char* argv[])
    {
        QApplication app(argc,argv);
        QWidget w;
        QPushButton button;
        button.setText("button");
    //    button.setParent(&w);
        QLineEdit edit;
    //    edit.setParent(&w);
    //    QVBoxLayout layout;
    #if 0
        QHBoxLayout layout;
        layout.addStretch(1);
        layout.addWidget(&button,1);
        layout.addSpacing(50);
        layout.addWidget(&edit,1);
        layout.addStretch(1);
    #endif
    
    #if 1
        QGridLayout layout;
        layout.addWidget(&button,0,0);
        layout.addWidget(&edit,0,1);
        layout.addWidget(new QPushButton("a"),1,0);
        layout.addWidget(new QPushButton("b"),1,1);
        layout.addWidget(new QPushButton("c"),2,0,1,2);
        layout.setRowStretch(3,1);
        layout.setColumnStretch(2,1);
    #endif
        QObject::connect(&button,SIGNAL(clicked(bool)),&w,SLOT(close()));
        w.setWindowTitle("hello world");
        w.setLayout(&layout);
        w.show();
        return app.exec();
    }
    
    当中我们用#if 0 .....#endif的预编译的方式来凝视代码。

     


    
  • 相关阅读:
    JZOJ5906 传送门
    JZOJ5907 轻功
    JZOJ5904 刺客信条
    JZOJ5347 遥远的金字塔
    JZOJ5344 摘果子
    JZOJ4742 单峰
    JZOJ4725 质数序列
    JZOJ2499 东风谷早苗
    JZOJ4737 金色丝线将瞬间一分为二
    最后的财产——模板大全
  • 原文地址:https://www.cnblogs.com/mthoutai/p/7363912.html
Copyright © 2020-2023  润新知