0

QDialog クラスの下で定義されている 2 つのクラスがあります。

両方のクラスは個別に適切に機能しており、それぞれのウィンドウを開いていますが、私が望むのは、あるウィンドウからメニューバーにアクションがあり、クリックすると他のウィンドウが開くことです。定義されたクラスのコードは クラス 1です

class Box : public QDialog
{
        Q_OBJECT

        public:
                Box(QWidget *parent=0);

        private slots:
                void refresh();

        signals:
                void itemChanged(QStandardItem *);

        private:
                void create_frame();
                void create_menu();

                QGroupBox *tablegroup;
                QDialogButtonBox *buttonbox;
                QAction *help;
                QAction *exit;
                QAction *idseacrh;
                QAction *idsearch;
                QMenu *file;
                QMenu *search;
                QMenuBar *menubar;
                QTableView *table;
};

クラス 2

class Box1 : public QDialog
{
        Q_OBJECT

        public:
                Box1(QWidget *parent=0);

        private:
                QLineEdit *text;
                QLabel *searchh;
                QDialogButtonBox *buttonboxx;
                QTableView *tablee;
                QGroupBox *tableegroup;
                QGroupBox *searchgroup;
};

アクションは Box1 を開く Box にあります。_私が作成してアップロードしようとした_ウィンドウの両方に画像もありますが、これを行うには 10 の評判が必要であると表示されているため、実行できませんでした。

4

1 に答える 1

2

理解できません。質問を理解したら、QMenuBar から Box1 ウィジェットで新しいウィンドウを作成するために対応する関数に QAction を接続するだけです。これを行う方法の簡単な例を次に示します。

void Box::newDialog()
{
    QVBoxLayout* lay = new QVBoxLayout;

    Box1* temp = new Box1(this);
    lay->addWidget(temp);

    QDialog dialog(this);
    dialog.setModal(true);
    dialog.setLayout(lay);
    dialog.setWindowTitle("Box1");

    dialog.exec();
}

connect(Box1Action, SIGNAL(triggered()), this, SLOT(newDialog()));

またはより簡単:

myMenu->addAction(tr("Create Box1 Window"), this, SLOT(newDialog()));
于 2012-07-06T11:59:10.770 に答える