C++ 如何在Qt C+中单击菜单栏中的元素时打开新的QDailog窗口+;
材质类有一个带有菜单栏的主窗口。当我单击菜单栏中的一个元素时,我想打开对话框窗口。 材料hC++ 如何在Qt C+中单击菜单栏中的元素时打开新的QDailog窗口+;,c++,qt,C++,Qt,材质类有一个带有菜单栏的主窗口。当我单击菜单栏中的一个元素时,我想打开对话框窗口。 材料h #ifndef MATERIALS_H #define MATERIALS_H #include <QMainWindow> #include "materialinner.h" class FictionSection; namespace Ui { class Materials; } class Materials : public QMainWindow, public Mate
#ifndef MATERIALS_H
#define MATERIALS_H
#include <QMainWindow>
#include "materialinner.h"
class FictionSection;
namespace Ui {
class Materials;
}
class Materials : public QMainWindow, public MaterialInner
{
Q_OBJECT
public:
explicit Materials(QWidget *parent = 0);
~Materials();
private:
Ui::Materials *ui;
FictionSection *fiction;
};
#endif // MATERIALS_H
#如果材料不合格#
#定义材料
#包括
#包括“materialinner.h”
班级管理科;
名称空间用户界面{
课堂材料;
}
类别材料:公共QMainWindow、公共MaterialInner
{
Q_对象
公众:
显式物料(QWidget*parent=0);
~Materials();
私人:
Ui::Materials*Ui;
虚构部分*虚构;
};
#endif//MATERIALS\u H
materials.cpp
#include "materials.h"
#include "ui_materials.h"
#include "fictionsection.h"
#include <QDebug>
#include <QMessageBox>
Materials::Materials(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Materials)
{
ui->setupUi(this);
// connect(ui->ficti,SIGNAL(textChanged(const QString &)),this,SLOT(displaySearch()));
}
Materials::~Materials()
{
delete ui;
}
void Materials::on_actionFiction_section_triggered()
{
this->hide();
fiction = new FictionSection();
fiction->show();
}
#包括“materials.h”
#包括“ui_materials.h”
#包括“第.h节”
#包括
#包括
材质::材质(QWidget*父项):
QMainWindow(父级),
ui(新ui::材质)
{
用户界面->设置用户界面(此);
//连接(ui->virtual,信号(textChanged(const-QString&)),这个,插槽(displaySearch());
}
材料::~Materials()
{
删除用户界面;
}
作废材料::在行动小说部分触发()
{
这个->隐藏();
虚构=新虚构部分();
小说->表演();
}
第h节
#ifndef FICTIONSECTION_H
#define FICTIONSECTION_H
#include <QDialog>
#include "materials.h"
namespace Ui {
class FictionSection;
}
class FictionSection : public QDialog, public Materials
{
Q_OBJECT
public:
explicit FictionSection(QWidget *parent = 0);
~FictionSection();
private:
Ui::FictionSection *ui;
};
#endif // FICTIONSECTION_H
#如果不符合第H节
#定义虚拟部分
#包括
#包括“materials.h”
名称空间用户界面{
班级管理科;
}
课堂部分:公共QDialog、公共材料
{
Q_对象
公众:
显式虚拟部分(QWidget*parent=0);
~1节();
私人:
Ui::虚拟部分*Ui;
};
#endif//U H段
当我编译时,它给出了一个错误
会员“展示”请求不明确。
请帮我解决这个问题。提前谢谢。问题是您的
虚拟部分
类继承自QDialog
和材质
,但您的材质
类也继承自QMainWindow
。QMainWindow
和QDialog
都有一个虚拟的show()
方法(继承自QWidget
),这会导致歧义。换句话说:您打算调用QMainWindow::show
的实现还是QDialog::show
的实现?没人知道
要解决这个问题,您应该正确地使用继承。从QMainWindow
或QDialog
继承,但不能同时从两者继承
您需要理解为什么您继承了自己的方式(这是错误的),并改进类之间关系的逻辑,以避免类似这样的问题
此外,类名应为单数,因此
材质
应为材质
。如果它需要处理多个问题,那么它可以是MaterialManager
或类似的东西。@user3279893如果它对您有帮助,请将答案标记为“已接受”,让其他人知道此类问题的解决方案。