0

我的应用程序的主要部分是一个系统托盘菜单。对于维护,应该有一个正常的 GUI。

我的问题是现在我必须从每个选项卡创建两个信号/插槽连接回到主窗口。这是为了最小化 GUI 和更新菜单。我不知道该怎么做。

我试图this->parent->parent从 ManageSession 和ui_manag->session_ui->minimizeButtonMainWindow 连接。我脑子里有个小疙瘩,正在寻求帮助。还是我应该重新考虑我的设计?我只使用 QtCreator 2.6.1 和 Qt 4.8.4。

GUI 元素的屏幕截图

这是 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
}

Tab 完全由 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
4

1 回答 1

1

让我们在答案中重新制作它(这样您就可以接受它,呵呵。j / k,渴望发表评论):

第一的。正如我在评论中所说:

您在没有指定访问权限的情况下继承。所以它默认为私有。这就是为什么

ui_manag->session_ui->minimizeButton  

不允许您访问该按钮。

第二。parent 是一个方法,所以它是: this->parent()->parent() 或只是 parent()->parent() ;) 同样,它可能需要继承 public。不确定,寿。那应该可以。

于 2013-04-08T21:55:39.763 回答