【问题标题】:How to access widgets in different tabs of QTabWidget?如何访问 QTabWidget 不同选项卡中的小部件?
【发布时间】:2014-05-27 06:10:34
【问题描述】:

我知道如何创建一个新标签并将新小部件添加到 QTabWidget 的新标签中。

我的代码:

QPlainTextEdit *plainTextEdit = new QPlainTextEdit;
ui->tabWidget->addTab(plainTextEdit , "New");

当我单击按钮时,将创建新选项卡及其自己的 QPlainTextEdit 小部件。

但我不知道如何将属性设置为不同的 QPlainTextEdit 或保存它们的内容。

例如,我想在 tab4 中设置 QPlainTextEdit 的字体大小,并在 tab5 中保存 QPlainTextEdit 的内容。

如何实现这些功能?

【问题讨论】:

    标签: c++ qt user-interface widget qt4


    【解决方案1】:

    要在标签索引处获取小部件,您可以使用 QTabWidgetwidget 函数。

    在您的情况下,QPlainTextEdit 是每个标签页的唯一小部件:

    QPlainTextEdit* plainTextEdit = (QPlainTextEdit*) ui->tabWidget->widget(0); // for the first tab
    
    plainTextEdit->setPlainText("Hello!");
    

    如果QPlainTextEdit不是唯一的widget,则需要获取widget的children并在其中找到QPlainTextEdit

    QList<QPlainTextEdit *> allTextEdits = ui->tabWidget->widget(0)->findChildren<QPlainTextEdit *>();
    if (allTextEdits.count() >0) 
        allTextEdits[0]->setPlainText("Hello!");;
    

    【讨论】:

      【解决方案2】:

      您应该有指向您的QPlainTextEdits 的指针作为主小部件类的成员:

      class Widget : public QWidget
      {
          Q_OBJECT
      
      public:
          Widget(QWidget *parent = 0);
          ~Widget();
      
          void someFunction();
      private:
          QPlainTextEdit *plainTextEdit;
      }
      
      Widget::Widget(QWidget *parent)
          : QWidget(parent)
      {
         ...
         plainTextEdit = new QPlainTextEdit;
         ui->tabWidget->addTab(plainTextEdit , "New");
      }
      
      void Widget::someFunction()
      {
         plainTextEdit->setPlainText("Hello!");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-04
        • 2012-03-16
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多