我是QT Creator的新手。我确实创建了一个菜单:Login ||打开。单击登录后,我希望看到行编辑和按下按钮。单击“打开”后,我想在窗口中看到一张图片。我可以根据在菜单栏中单击的内容来更改同一窗口的界面吗?我怎样才能做到这一点?

最佳答案

我做了类似的事情-一个具有几个主要区域的应用程序,通过顶部的图标栏进行切换。
我使用 QStackWidget 彼此堆叠不同的应用程序区域,使用设计器创建了一组 QAction ,并使用 QActionGroup 实现了切换。
当这些 Action 被标记为“可检查”并分组为QActionGroup时, QToolBar 只能在当时激活一个 Action 。

这是我的代码的简化摘录:

// MyApp.h
#include <QMainWindow>
class QAction;
class QActionGroup;

namespace Ui {
    class MyApp;
}

class MyApp: public QMainWindow
{
    Q_OBJECT

public:
    explicit MyApp(QWidget *parent = 0);
    ~MyApp();

public slots:
    void showSection(QAction* a);

private:
    Ui::MyApp *ui;
    QActionGroup* sections;
};
//MyApp.cpp
#include "structureapp.h"
#include "ui_structureapp.h"

#include <QActionGroup>

MyApp::MyApp(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MyApp),
    sections(new QActionGroup(this)),
{
    ui->setupUi(this);

    /* Populate section list */

    /* Page indices for the stack widget*/
    ui->actionSectionOne->      setData(0);
    ui->actionSectionTwo->      setData(1);
    ui->actionSectionThree->    setData(2);

    sections->addAction(ui->actionSectionOne);
    sections->addAction(ui->actionSectionTwo);
    sections->addAction(ui->actionSectionThree);


    ui->mainToolBar->addSeparator();

    connect(sections, SIGNAL(triggered(QAction*)), this, SLOT(showSection(QAction*)));

    /* Show the default section */
    ui->actionContentSection->trigger();
}

MyApp::~MyApp()
{
    delete ui;
}

void MyApp::showSection(QAction *a)
{
    ui->mainArea->setCurrentIndex(a->data().toInt());
}

关于c++ - QT Creator主窗口-如何从菜单更改每个元素的界面?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6747296/

10-12 05:24