0
我嘗試使用OpenGL實現一個應用程序, ,如下面的示例所示,我使用QWindow創建OpenGL上下文。在QWindow中使用QFileDialog
http://doc.qt.io/qt-5/qtgui-openglwindow-example.html
在這個應用程序,我希望當我按下S鍵來創建一個文件對話框。 但是,QFileDialog::getSaveFileName
要求QWidget
的父項。 The documentation表示如果parent
爲0,則對話框將顯示在父控件的中心。 我想知道在這種情況下 可以簡單地使用nullptr
作爲parent
。
例子:
#include <QApplication>
#include <QMainWindow>
#include <QKeyEvent>
#include <QDebug>
#include <QFileDialog>
#include <QtGui/QWindow>
class DisplayWindow final : public QWindow
{
Q_OBJECT
public:
DisplayWindow(QWindow* parent = 0)
: QWindow(parent)
{
// Setup OpenGL context
// ...
}
protected:
virtual void keyPressEvent(QKeyEvent* event) override
{
if (event->key() == Qt::Key_S)
{
// ???????
QString path = QFileDialog::getSaveFileName(nullptr, "Save", "", "");
qDebug() << path;
}
}
};
class MainWindow final : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0)
: QMainWindow(parent)
{
displayWindow = new DisplayWindow;
auto* container = QWidget::createWindowContainer(displayWindow, this);
container->setMinimumSize(200, 200);
setCentralWidget(container);
}
private:
DisplayWindow* displayWindow;
};
int main(int argc, char** argv)
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
#include "moc_test.cpp"
我不明白你的問題。醫生說你可以做到這一點,你可以嘗試自己看,但你仍然在這裏問一個問題。 – undu
@undu重點是類型的差異。 DisplayWindow的父類型是QWindow,但QFileDialog :: getSaveFileName需要QWidget。我想知道在這種情況下,如文檔所述,使用nullptr是有效的。 – akarin64