C++ QMainWindow“打开文件”对话框被切断并不显示';不回答
Qt5中的“打开文件”对话框被切断,对任何鼠标单击都没有响应。我在QMainWindow(per)的中央小部件中使用OpenGLWindow(per)。如果我没有将中心窗口小部件设置为我的OpenGLWindow,那么“打开文件”对话框可以工作,但是一旦我在中心窗口小部件中使用了OpenGLWindow,就会出现这个问题。请参见下面的屏幕截图。关于如何修复或调试它有什么想法吗 main.cpp:C++ QMainWindow“打开文件”对话框被切断并不显示';不回答,c++,qt,user-interface,qt5,C++,Qt,User Interface,Qt5,Qt5中的“打开文件”对话框被切断,对任何鼠标单击都没有响应。我在QMainWindow(per)的中央小部件中使用OpenGLWindow(per)。如果我没有将中心窗口小部件设置为我的OpenGLWindow,那么“打开文件”对话框可以工作,但是一旦我在中心窗口小部件中使用了OpenGLWindow,就会出现这个问题。请参见下面的屏幕截图。关于如何修复或调试它有什么想法吗 main.cpp: ... QApplication app(argc, argv); QSur
...
QApplication app(argc, argv);
QSurfaceFormat format;
format.setSamples(16);
MainWindow mainWin;
MyOpenGLWindow window();
window.setFormat(format);
window.setAnimating(true);
QWidget *container = QWidget::createWindowContainer(&window);
mainWin.setCentralWidget(container);
#if defined(Q_OS_SYMBIAN)
mainWin.showMaximized();
#else
mainWin.show();
#endif
....
mainwindow.cpp:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QFileDialog>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_File_triggered()
{
QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "/home");
}
#包括“mainwindow.h”
#包括“ui_main window.h”
#包括
主窗口::主窗口(QWidget*父窗口):
QMainWindow(父级),
用户界面(新用户界面::主窗口)
{
用户界面->设置用户界面(此);
}
MainWindow::~MainWindow()
{
删除用户界面;
}
void main window::on_actionOpen_File_triggered()
{
QString fileName=QFileDialog::getOpenFileName(this,tr(“打开文件”),“/home”);
}
mainwindow.h:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
private slots:
void on_actionOpen_File_triggered();
};
#endif // MAINWINDOW_H
\ifndef主窗口
#定义主窗口
#包括
名称空间用户界面{
类主窗口;
}
类主窗口:公共QMainWindow
{
Q_对象
公众:
显式主窗口(QWidget*parent=0);
~main窗口();
私人:
Ui::MainWindow*Ui;
专用插槽:
操作打开文件时无效已触发();
};
#endif//main窗口
mainwindow.ui:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget"/>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuTest_Window">
<property name="title">
<string>File</string>
</property>
<addaction name="actionOpen_File"/>
</widget>
<addaction name="menuTest_Window"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
<action name="actionOpen_File">
<property name="text">
<string>Open File</string>
</property>
</action>
</widget>
<resources/>
<connections/>
</ui>
主窗口
0
0
800
600
主窗口
0
0
800
25
文件
解决这个问题的方法似乎是使用(per)。使用OpenGL的QWindow方法似乎无法与其他QWidget很好地结合。我成功地将我的应用程序转移到QOpenGLWidget上,现在可以使用了 您是否尝试不使用父级
,例如QFileDialog::getOpenFileName(nullptr,tr(“打开文件”),“/home”)代码>?@Zeta,我没有试过,但现在试一下,它不起作用。还是一样的问题。