【问题标题】:QT dynamically generate label, LineEdit, ButtonQT动态生成label、LineEdit、Button
【发布时间】:2017-11-24 08:57:44
【问题描述】:

我想在QT里面做串口通信,根据串口的个数动态生成label、LineEdit、Button,这三个按钮可以拉下滚动条时的界面大小,怎么做好吧,我在下面写这个是死的。

封装成方法的效果

界面最后洗了

【问题讨论】:

  • 不要发布您的代码的屏幕截图...只需发布您的代码。

标签: c++ qt


【解决方案1】:
  1. 在 QScrollArea 中定义 QGridLayout。并将您的新小部件添加到 代码中的布局。 QGridLayout::addWidget
  2. 定义表格,您将在表格单元格中显示多个小部件。真是复杂的方式。

【讨论】:

    【解决方案2】:
    void BaseUi::BaseScrollArea()
    {
        QScrollArea *pArea = new QScrollArea();
        QWidget *pWidget = new QWidget();
        pWidget->setStyleSheet("QWidget" "{background:white;}");
        m_vbox_layout = new QVBoxLayout();
        m_vbox_layout->addSpacerItem(new QSpacerItem(100, 30, 
        QSizePolicy::Expanding, QSizePolicy::Expanding));
        pWidget->setLayout(m_vbox_layout);
        pArea->setWidget(pWidget);
        pArea->setWidgetResizable(true);
        m_main_layout = new QVBoxLayout();
        m_main_layout->addWidget(pArea);
    }
    
    void BaseUi::addAutoRecordUi(QString lab_neme, QString ledit_name)
    {
         QWidget *page = new QWidget;
         QGridLayout *layout = new QGridLayout(page);
    
         QLabel *label = new QLabel;
         label->setText(lab_neme);
         label->setFont(font());
    
        QLineEdit *ledit = new QLineEdit;
        ledit->setText(ledit_name);
        ledit->setFont(font());
    
        layout->addWidget(label, 0, 1);
        layout->addWidget(ledit, 0, 2);
    
        page->setLayout(layout);
    
        m_vbox_layout->insertWidget(m_vbox_layout->count()-1, page);
    
    }
    
     void BaseUi::addMulRecordUi(QString lab_neme, QString ledit_name, QString 
          but_name)
     {
        QWidget *page = new QWidget;
        QGridLayout *layout = new QGridLayout(page);
    
        QLabel *label = new QLabel;
        label->setText(lab_neme);
        label->setFont(font());
    
       QLineEdit *ledit = new QLineEdit;
       ledit->setText(ledit_name);
       ledit->setFont(font());
    
       QPushButton *but = new QPushButton(but_name);
       but->setFont(font());
    
       layout->addWidget(label, 0, 1);
       layout->addWidget(ledit, 0, 2);
       layout->addWidget(but, 0, 3);
    
       page->setLayout(layout);
    
       m_vbox_layout->insertWidget(m_vbox_layout->count()-1, page);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 2013-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多