资讯详情

qt之布局

Qt 共提供了 5 种布局管理器,每个布局管理器对应一个类,即 QVBoxLayout(垂直布局),QHBoxLayout(水平布局),QGridLayout(网格布局),QFormLayout和 QStackedLayout(分组布局) 常用的布局是前三种

QVBoxLayout* pLayout = new QVBoxLayout()///水平布局      QPushButton* p1 = new QPushButton("p1");     QPushButton* p2 = new QPushButton("p2");     QPushButton* p3 = new QPushButton("p3");     QPushButton* p4 = new QPushButton("p4");       pLayout->addWidget(p1);      pLayout->addWidget(p2);      pLayout->addWidget(p3);      pLayout->addWidget(p4);       this->setLayout(pLayout);  

QHBoxLayout* pLayout = new QHBoxLayout()///水平布局      QPushButton* p1 = new QPushButton("p1");     QPushButton* p2 = new QPushButton("p2");     QPushButton* p3 = new QPushButton("p3");     QPushButton* p4 = new QPushButton("p4");      pLayout->addWidget(p1);     pLayout->addWidget(p2);     pLayout->addWidget(p3);     pLayout->addWidget(p4);      this->setLayout(pLayout); 

QGridLayout* layout = new QGridLayout();  TestBtn1.setText("Test Button 1"); TestBtn1.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);///设置组件尺寸可扩展 TestBtn1.setMinimumSize(160, 30);//设置最小尺寸  TestBtn2.setText("Test Button 2"); TestBtn2.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn2.setMinimumSize(160, 30);  TestBtn3.setText("Test Button 3"); TestBtn3.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn3.setMinimumSize(160, 30);  TestBtn4.setText("Test Button 4"); TestBtn4.setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); TestBtn4.setMinimumSize(160, 30);  layout->setSpacing(10)//设置间距 layout->addWidget(&TestBtn1, 0, 0);///向网格的不同坐标添加不同的组件 layout->addWidget(&TestBtn2, 0, 1); layout->addWidget(&TestBtn3, 1, 0); layout->addWidget(&TestBtn4, 1, 1);  layout->setRowStretch(0, 1)//设置行列比例系数 layout->setRowStretch(1, 3); layout->setColumnStretch(0, 1); layout->setColumnStretch(1, 3);  setLayout(layout);//设置顶级布局管理器  

    QApplication a(argc, argv);     //创建主窗口     QWidget widget;     widget.setWindowTitle("QFormLayout表单布局");     //创建 4 个按钮和 1 个文本框     QFormLayout* layout = new QFormLayout();     设置表中的标签位于控件上方     layout->setRowWrapPolicy(QFormLayout::WrapAllRows);     //添加 3 行输入框和标签     layout->addRow("Name:",new QLineEdit());     layout->addRow("Email:",new QLineEdit());     layout->addRow("Adress:",new QLineEdit());     ///设置行间距和列间距 10     layout->setSpacing(10);     //将 layout 表单添加到 widget 窗口中     widget.setLayout(layout);     widget.show();     return a.exec(); 

  QApplication a(argc, argv);     //创建主窗口     QWidget widget;     widget.setWindowTitle("QStackedLayout分组布局");     widget.resize(600,400);     ///在主窗口加一个水平布局控制器     QHBoxLayout *layout=new QHBoxLayout;         //创建列表     QListWidget listWidget(&widget);     listWidget.setMinimumWidth(150);     listWidget.setFont(QFont("宋体",14));     listWidget.addItem("QPushButton");     listWidget.addItem("QLabel");     listWidget.addItem("QLineEdit");         //新建 3 个窗口,文本框、按钮和单行输入框分别放置     QWidget widget1;     widget1.setMinimumSize(400,400);     QPushButton but1("这是一个按钮",&widget1);     QWidget widget2;     widget2.setMinimumSize(400,400);     QLabel lab1("这是一个文本框",&widget2);     QWidget widget3;     widget3.setMinimumSize(400,400);     QLineEdit edit("这是单行输入框",&widget3);         //创建分组布局,将 3 将每个窗口添加到分组控件中     QStackedLayout *stackedLayout = new QStackedLayout;     stackedLayout->addWidget(&widget1);     stackedLayout->addWidget(&widget2);     stackedLayout->addWidget(&widget3);         //layout 第一列添加 QListWidget 控件,第二列添加分组布局控件,设置其伸缩系数比 1:4     layout->addWidget(&listWidget,1);     layout->addLayout(stackedLayout,4);     //将 layout 添加水平布局控件 widget 窗口中     widget.setLayout(layout);     widget.show();     当点击列表中的某一项时,//连接信号和槽,切换分组布局管理器显示的控件     QObject::connect(&listWidget,&QListWidget::currentRowChanged,stackedLayout,&QStackedLayout::setCurrentIndex);     return a.exec(); 

标签: 2p3p间距连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台