gpt4 book ai didi

c++ - 将 QFileDialog 与 QWindow 一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 13:28:31 25 4
gpt4 key购买 nike

我尝试用 OpenGL 实现一个应用程序,因此,如以下示例所示,我使用 QWindow 来创建 OpenGL 上下文。

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"

最佳答案

是的,它应该是安全的。由于您没有动态分配内存,因此您不必删除任何内容。如果您设置了 parent ,Qt 将自行删除这些小部件。在这里它只是影响窗口的形态和位置。如果你想设置 parent ,你可以在你的上下文中使用“this”。

关于c++ - 将 QFileDialog 与 QWindow 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32476636/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com