如何访问 QTabWidget 不同选项卡中的小部件?
Posted
技术标签:
【中文标题】如何访问 QTabWidget 不同选项卡中的小部件?【英文标题】:How to access widgets in different tabs of QTabWidget? 【发布时间】:2014-05-27 06:10:34 【问题描述】:我知道如何创建一个新标签并将新小部件添加到 QTabWidget 的新标签中。
我的代码:
QPlainTextEdit *plainTextEdit = new QPlainTextEdit;
ui->tabWidget->addTab(plainTextEdit , "New");
当我单击按钮时,将创建新选项卡及其自己的 QPlainTextEdit 小部件。
但我不知道如何将属性设置为不同的 QPlainTextEdit 或保存它们的内容。
例如,我想在 tab4 中设置 QPlainTextEdit 的字体大小,并在 tab5 中保存 QPlainTextEdit 的内容。
如何实现这些功能?
【问题讨论】:
【参考方案1】:要在标签索引处获取小部件,您可以使用 QTabWidget
的 widget
函数。
在您的情况下,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】:您应该有指向您的QPlainTextEdit
s 的指针作为主小部件类的成员:
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!");
【讨论】:
以上是关于如何访问 QTabWidget 不同选项卡中的小部件?的主要内容,如果未能解决你的问题,请参考以下文章
QTabWidget 或 QTabBar 使用 C++ 在不同选项卡中显示相同的 QWidget
QTabWidget 选项卡在其中一个选项卡中不显示任何内容