从QTab(在QTabWidget中)连接回QMainWindow

时间:2013-04-07 14:23:31

标签: qt connect tabwidget

我的应用程序的主要部分是Systray-Menu。对于维护,应该有一个普通的GUI。

我的问题是,现在我必须从每个Tab创建两个返回MainWindow的Signal / Slot-Connections。这是为了最小化GUI和更新菜单。我不知道该怎么做。

我尝试与ManageSession中的this->parent->parent和MainWindow上的ui_manag->session_ui->minimizeButton建立联系。我头脑中有一点结,我正在寻求帮助。或者我应该重新思考我的设计?我只使用QtCreator 2.6.1和Qt 4.8.4。

Screenshots of the GUI-Elements

这是mainwindows.cpp:

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
 setWindowTitle(QCoreApplication::applicationName());
 QWidget *mainWidget = new QWidget;
 QTabWidget *ui_manag = new ManageTab;
 QVBoxLayout *mainLayout = new QVBoxLayout;
 mainLayout->addWidget(ui_manag);
 mainWidget->setLayout(mainLayout);
 setCentralWidget(ui_manag);
 ui_manag->setCurrentIndex(0);
 //Here comming Code to setup a TrayIcon, the Database and the Menus
}

选项卡完全由Designer生成:

ManageTab::ManageTab(QWidget *parent) :
QTabWidget(parent),
tab_ui(new Ui::ManageTab)
{
 tab_ui->setupUi(this);
}

对于每个设置,我使用具有多重继承的相同GUI:

ManageSession::ManageSession(QWidget *parent) :
QWidget(parent),
session_ui(new Ui::ManageWidget)
{
 session_ui->setupUi(this);
 session_ui->manageLabel->setText(tr("Manage Session"));

 connect(session_ui->addButton, SIGNAL(clicked()), this, SLOT(addButton_clicked()));
 connect(session_ui->editButton, SIGNAL(clicked()), this, SLOT(editButton_clicked()));
 connect(session_ui->deleteButton, SIGNAL(clicked()), this, SLOT(deleteButton_clicked()));
}
//Here follows the Functions for manipulating the TableView
// and emmiting a Signal to Update the Menu

1 个答案:

答案 0 :(得分:1)

让我们在一个答案中重新制作它(所以你可以接受它,呵呵.j / k,渴望评论):

首先。正如我在评论中所说:

您继承而未指定访问权限。所以它默认为私有。这就是为什么

ui_manag->session_ui->minimizeButton  

不允许您访问该按钮。

二。 parent是一种方法,所以它是:this-> parent() - > parent()或者只是parent() - > parent();) 同样,它可能需要继承公众。不确定,是的。 那应该适用。