Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ QMainWindow“打开文件”对话框被切断并不显示';不回答_C++_Qt_User Interface_Qt5 - Fatal编程技术网

C++ QMainWindow“打开文件”对话框被切断并不显示';不回答

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

Qt5中的“打开文件”对话框被切断,对任何鼠标单击都没有响应。我在QMainWindow(per)的中央小部件中使用OpenGLWindow(per)。如果我没有将中心窗口小部件设置为我的OpenGLWindow,那么“打开文件”对话框可以工作,但是一旦我在中心窗口小部件中使用了OpenGLWindow,就会出现这个问题。请参见下面的屏幕截图。关于如何修复或调试它有什么想法吗

main.cpp:

    ...
    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,我没有试过,但现在试一下,它不起作用。还是一样的问题。