根据用户输入,我希望能够在Qt应用程序中动态添加选项卡。
默认情况下,将始终存在一个选项卡。为了方便起见,如果我可以在图形编辑器中创建此选项卡的布局和功能,然后将此布局转换为代码,放入类构造函数中,并添加选项卡,则会非常好:
ui->tabWidget->addTab(new myTabClass(), "Tab 2");
我还想以编程方式推广这个选项卡。这可行吗?
根据用户输入,我希望能够在Qt应用程序中动态添加选项卡。
默认情况下,将始终存在一个选项卡。为了方便起见,如果我可以在图形编辑器中创建此选项卡的布局和功能,然后将此布局转换为代码,放入类构造函数中,并添加选项卡,则会非常好:
ui->tabWidget->addTab(new myTabClass(), "Tab 2");
我还想以编程方式推广这个选项卡。这可行吗?
如果要动态添加选项卡并由类构建,可以使用额外的 .ui 文件。这样,您可以使用 Qt Designer GUI 完成所有布局工作。
1)在 mainwindow.ui 中创建一个空的选项卡窗口部件(例如命名为 myTabWidget)。
2)向项目目录中添加一个新的“Qt 设计表单类”,作为 QWidget 类添加,而不是 QTabWidget(例如命名为 MyTabPage):
右键单击项目 -> 添加新项 -> Qt -> Qt Design Form Class
3)在 mytabpage.ui 中设计您想要插入 myTabWidget 的内容。
4)接下来,在 MainWindow 构造函数或其他地方实例化 MyTabPage,并将其添加到 myTabWidget 中。在此之前可以删除 myTabWidget 中的空选项卡。要访问 myNewTab 中的参数,您需要在 MyTabPage 中声明一个函数。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
MyTabPage *myNewTab = new MyTabPage;
ui-> myTabWidget ->removeTab(0);
ui-> myTabWidget ->addTab(myNewTab, tr("name"))
myNewTab->functionDeclaredInMyTabPage (); //access parameters of myNewTab
}
PS:我知道这个问题已经很久了。但是我想为其他人提供一步一步的解决方案,因为最近我自己也在努力解决这个问题。
addTab()
行末缺少 ;
。 - BlueChipint QTabWidget::insertTab ( int index, QWidget * page, const QIcon & icon, const QString & label )
来插入标签,它会在指定的索引处将具有给定标签、页面和图标的标签插入到标签窗口小部件中。ui->tabWidget->insertTab(1,new myTabClass(),QIcon(QString(":/SomeIcon.ico")),"TabText");
QTabWidget::removeTab ( int index )
实现。