C++ QAction信号插槽中的不可见UI

C++ QAction信号插槽中的不可见UI,c++,qt,user-interface,C++,Qt,User Interface,早上好 我在Ubuntu下使用Qdesigner和C++ 17编程非常简单的任务。 我的GUI和我的问题的目标如下 目标: 我需要对几个图像数据集进行标签化。 对于输入,算法给了我三个存储在四个文件夹中的输出,然后我将把输入数据集中的每个图像与三个相应的输出数据中的每一个并排显示,最后对算法结果的质量做出布尔决定。 因为我在几个数据集上应用了这个算法,所以我想在启动项目时为每个数据集选择输入和三个输出文件夹 问题: 我把主窗口放在里面,我加载每个图像并做出决定。 我在一个约束条件下对它进行评估,

早上好

我在Ubuntu下使用Qdesigner和C++ 17编程非常简单的任务。 我的GUI和我的问题的目标如下

目标:

我需要对几个图像数据集进行标签化。 对于输入,算法给了我三个存储在四个文件夹中的输出,然后我将把输入数据集中的每个图像与三个相应的输出数据中的每一个并排显示,最后对算法结果的质量做出布尔决定。 因为我在几个数据集上应用了这个算法,所以我想在启动项目时为每个数据集选择输入和三个输出文件夹

问题:

我把主窗口放在里面,我加载每个图像并做出决定。 我在一个约束条件下对它进行评估,它工作得很好。 为了实现开放项目的目标,我制作了第二个UI,在这里我可以看到开放项目的外观。 我在主窗口之外的上下文中评估第二个UI,它也工作得很好。 所以我在slot方法中调用这个ui,但是当我调用菜单时,什么也没有发生。 多亏了一个
std::cout
实例,我可以在单击菜单或使用快捷方式时检查是否调用了slot方法,但是什么也没有发生

下面是由
QMenu
对象调用的slot方法

void main_gui::on_New_Project_triggered()
{
    std::cout<<"NEW PROJECT "<<std::endl;

    new_project3 np(this,this);
    // new_project3 np(this,this->parent());

    np.show();
    np.raise();
    np.activateWindow();

}
对于第一个参数,我与
new\u project3
类共享
main\u gui
实例,以便在不复制的情况下初始化多个
QStringList

提前感谢您的帮助

编辑

解决方案:

new\u project3
继承自类
QWidget
。 由于某种原因,我不知道我没有在继承自
QMainWindows
的类中创建任何
new\u project3
实例。 但是,我修改了
new_project3
的继承,以便从类
QDialog
继承,然后以下代码工作正常:

void main_gui::on_New_Project_triggered()
{
    std::cout<<"NEW PROJECT "<<std::endl;

    new_project3 np(this,this);

    np.exec();

}
void main_gui::on_New_Project_triggered()
{

std::cout
.exec()
是非阻塞的,小部件几乎立即被标记为显示和销毁。

.exec()
(属于
QDialog
的成员,但不属于
QWidget
)执行事件循环并使其处于模式(同步、阻塞)。在原始代码中,小部件是一个本地对象,在插槽结束时被销毁。as
.show()
是非阻塞的,小部件几乎立即被标记为显示和销毁。

这就是我没有看到任何内容的原因。非常感谢您的解释。现在看来很清楚,与用户的任何交互都必须继承QDialog。这就是我没有看到任何内容的原因。非常感谢您的解释。没有显然,与用户的任何交互都必须继承QDialog。
void main_gui::on_New_Project_triggered()
{
    std::cout<<"NEW PROJECT "<<std::endl;

    new_project3 np(this,this);

    np.exec();

}