我的 mainwindpw.ui 完全是空的,我使用了“柴郡猫实现”......当我stackedWidget
在我的代码中的表单上发布时,我q->
不能使用这个小部件???我哪里错了?我应该在主窗口或主窗口Pvt中设置它??为什么?
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QMenu>
#include <QMenuBar>
#include <QAction>
#include <QMap>
#include "aboutdialog.h"
#include "previewwidget.h"
class MainWindowPvt : public QObject
{
Q_OBJECT
public:
explicit MainWindowPvt(MainWindow *mw);
MainWindow *q;
public slots:
void openPrg();
void exitApplication();
void programMode();
void previewMode();
void information();
private:
enum class Actions {
Open,
Exit,
ViewProgram,
ViewPreview,
Information
};
QMap<Actions, QAction*> actions;
PreviewWidget *previw;
};
MainWindowPvt::MainWindowPvt(MainWindow *mw) :
q{mw},
stacked{new QStackedWidget(this)},
previw{new PreviewWidget(this)}
{
// AZIONI
QAction *act{new QAction("Open", q)};
act->setShortcut(QKeySequence::Open);
actions.insert(Actions::Open, act);
connect(act, &QAction::triggered, this, &MainWindowPvt::openPrg);
act = new QAction("Exit", q);
act->setShortcut(QKeySequence::Quit);
actions.insert(Actions::Exit, act);
connect(act, &QAction::triggered, this, &MainWindowPvt::exitApplication);
act = new QAction("Program mode", q);
act->setShortcut(QKeySequence("Ctrl+2"));
actions.insert(Actions::ViewProgram, act);
connect(act, &QAction::triggered, this, &MainWindowPvt::programMode);
act = new QAction("Preview mode", q);
act->setShortcut(QKeySequence("Ctrl+3"));
actions.insert(Actions::ViewPreview, act);
connect(act, &QAction::triggered, this, &MainWindowPvt::previewMode);
act = new QAction("Information", q);
actions.insert(Actions::Information, act);
connect(act, &QAction::triggered, this, &MainWindowPvt::information);
// MENU
QMenu *menu{new QMenu(tr("File"), q)};
menu->addAction(actions.value(Actions::Open));
menu->addAction(actions.value(Actions::Exit));
q->menuBar()->addMenu(menu);
menu = new QMenu(tr("View"), q);
menu->addAction(actions.value(Actions::ViewProgram));
menu->addAction(actions.value(Actions::ViewPreview));
q->menuBar()->addMenu(menu);
menu = new QMenu(tr("?"), q);
menu->addAction(actions.value(Actions::Information));
q->menuBar()->addMenu(menu);
// STACKED WIDGET
q->
}
谢谢