• QT 常用控件二


    QT提供QHBoxLayout类、QVBoxlayout类及QGridLayout类等的基本布局管理,分别是水平排列布局,垂直排列布局和网格排列布局
    addWidget()方法用于向布局中加入需要布局的控件
    addLayout()方法用于向布局中加入需要布局的子布局
    Widget::Widget(QWidget *parent)
        : QWidget(parent)
    {
        /*设置窗口标题*/
        setWindowTitle("用户信息");
    
        /*左侧*/
        /*左侧第一行*/
        label1=new QLabel(tr("用户名"));
        edit1=new QLineEdit();
        QGridLayout * lay1=new QGridLayout();
        lay1->addWidget(label1,0,0);
        lay1->addWidget(edit1,0,1);
    
        /*左侧第二行*/
        label2=new QLabel(tr("姓名"));
        edit2=new QLineEdit();
        lay1->addWidget(label2,1,0);
        lay1->addWidget(edit2,1,1);
    
        /*左侧第三行*/
        label3=new QLabel(tr("性别"));
        comb1=new QComboBox();
        comb1->addItem(tr(""));
        comb1->addItem(tr(""));
        lay1->addWidget(label3,2,0);
        lay1->addWidget(comb1,2,1);
    
        /*左侧第四行*/
        label4=new QLabel(tr("部门"));
        txt1=new QTextEdit();
        lay1->addWidget(label4,3,0);
        lay1->addWidget(txt1,3,1);
    
        /*左侧第五行*/
        label5=new QLabel(tr("年龄"));
        edit3=new QLineEdit();
        lay1->addWidget(label5,4,0);
        lay1->addWidget(edit3,4,1);
    
        /*左侧第六行 */
        label6=new QLabel(tr("备注"));
        label6->setFrameStyle(QFrame::Panel||QFrame::Sunken);
        /*addWidget第四个参数表示占据几行,第五个参数表示占据几列*/
        lay1->addWidget(label6,5,0,1,2);
    
        /*setColumnStretch()设置QGridLayout每列的占位比*/
        /*设置第0列和第1列的占位比,这里设置第0列和第1列的比例是1:3;--setColumnStretch(0,1)设置第0列占位比是1,setColumnStretch(1,3)设置第1列的占位比是3*/
        lay1->setColumnStretch(0,1);
        lay1->setColumnStretch(1,3);
    
        /*右侧*/
        QVBoxLayout * lay3=new QVBoxLayout();
        /*右侧第一行*/
        QHBoxLayout *lay2=new QHBoxLayout();
        label6=new QLabel(tr("头像"));
        label7=new QLabel();
        /*定义图片对象:注意QT的当前路径是build-untitled-Desktop_Qt_5_2_0_MinGW_32bit-Debug目录下*/
        QPixmap icon("1.png");
        /*设置label7的背景图片*/
        label7->setPixmap(icon);
        /*设置label7的大小*/
        /*这里设置label7的大小为背景图片的大小*/
        label7->resize(icon.width(),icon.height());
        btn1=new QPushButton("更新");
        /*设置QHBoxLayout中控件间的间距*/
        lay2->setSpacing(20);
        lay2->addWidget(label6);
        lay2->addWidget(label7);
        lay2->addWidget(btn1);
    
        /*右侧第二行*/
        label8=new QLabel(tr("个人说明"));
    
        /*右侧第三行*/
        txt2=new QTextEdit();
    
        /*设置边距*/
        lay3->setMargin(10);
        /*addLayout()布局中加入布局*/
        lay3->addLayout(lay2);
        lay3->addWidget(label8);
        lay3->addWidget(txt2);
    
        /*底层*/
        btn2=new QPushButton(tr("确认"));
        btn3=new QPushButton(tr("取消"));
        QHBoxLayout *lay4=new QHBoxLayout();
        /*加入一个占位符*/
        lay4->addStretch();
        lay4->addWidget(btn2);
        lay4->addWidget(btn3);
    
        /*创建全局Layout*/
        QGridLayout * mainlay=new QGridLayout(this);
        mainlay->setMargin(15);
        mainlay->setSpacing(10);
        mainlay->addLayout(lay1,0,0);
        mainlay->addLayout(lay3,0,1);
        mainlay->addLayout(lay4,1,0,1,2);
        /*设置layout与控件大小一致,不能随意改变layout的大小*/
        mainlay->setSizeConstraint(QLayout::SetFixedSize);
    }

  • 相关阅读:
    JSR 303
    Spring JSR-250注解
    java 内部类
    爬虫
    多线程异步编程示例和实践-Task
    多线程异步编程示例和实践-Thread和ThreadPool
    线程机制、CLR线程池以及应用程序域
    二维码的生成与识别
    Unicode 和 UTF-8 有何区别?
    json转换为自定义类型的集合
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5978842.html
Copyright © 2020-2023  润新知