我有两个类都在QDialog类下定义。
两个类都单独正常工作并打开各自的窗口,但我想要的是从一个窗口中菜单栏中有一个操作,单击打开另一个窗口。定义的类的代码是第 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;
};
该操作将出现在 Box 中,它将打开 Box1。_我也有我创建并尝试上传的_窗口的图像,但它说我需要10个声誉才能做到这一点,所以我无法做到这一点。
我不明白。如果我理解了这个问题,您只需要将QMenuBar中的QAction连接到功能,这将对应于使用Box1小部件创建新窗口。这是您如何做到这一点的简单示例:
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()));