如何在Qt C++中单击菜单栏中的元素时打开新的QDailog窗口
How to open a new QDailog window when an element in the menu bar is clicked in Qt C++
Material类有一个带菜单栏的主窗口。当我点击菜单栏中的一个元素时,我想打开小说Q对话框窗口。material.h
#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
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();
}
第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
当我编译时,它会给出一个错误对成员"show"的请求不明确请帮我解决这个问题。提前谢谢。
问题是FictionSection
类继承自QDialog
和Materials
,但Materials
类也继承自QMainWindow
。QMainWindow
和QDialog
都有一个虚拟的show()
方法(继承自QWidget
),这导致了歧义。换句话说:您打算调用QMainWindow::show
的实现还是QDialog::show
的实现?没有人知道。
要解决此问题,您应该正确使用继承。从QMainWindow
或QDialog
继承,但不能同时继承。
您需要理解为什么是您继承了现有的方式(这是错误的),并改进类之间关系的逻辑,以避免类似这样的问题。
另外,类名应该是单数,所以Materials
应该是Material
。如果它需要处理多个事情,那么它可以是MaterialManager
或类似的东西。
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 如何在Qt C++中单击菜单栏中的元素时打开新的QDailog窗口