代码之家  ›  专栏  ›  技术社区  ›  Markus Weber

从QTab(在QTabWidget中)连接回QMainWindow

  •  0
  • Markus Weber  · 技术社区  · 12 年前

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

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

    我试着与联系 this->parent->parent 从管理会话和 ui_manag->session_ui->minimizeButton 从主窗口。我脑子里有个小疙瘩,正在寻求帮助。还是我应该重新考虑我的设计?我只使用Qt呼吸机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
    }
    

    选项卡完全由设计器生成:

    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 回复  |  直到 12 年前
        1
  •  1
  •   trompa    12 年前

    让我们重新制作一个答案(这样你就可以接受它了,嘿。j/k,期待评论):

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

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

    ui_manag->session_ui->minimizeButton  
    

    不允许您访问该按钮。

    第二 parent是一个方法,所以它是:this->parent()->parent()或仅parent(;parent();) 同样,它可能需要继承public。不确定,tho。 那就行了。