首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QWindow中使用QFileDialog

在QWindow中使用QFileDialog
EN

Stack Overflow用户
提问于 2015-09-09 18:05:28
回答 1查看 290关注 0票数 1

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

http://doc.qt.io/qt-5/qtgui-openglwindow-example.html

在这个应用程序中,我想要在按下S键时创建一个文件对话框。但是,QFileDialog::getSaveFileName需要QWidget的父级。The documentation表示如果parent为0,则对话框将显示在父窗口小部件的中心。我想知道在这种情况下,是否可以简单地使用nullptr作为parent

示例:

代码语言:javascript
复制
#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"
EN

回答 1

Stack Overflow用户

发布于 2015-09-09 18:10:24

是啊,应该很安全。因为不是动态分配内存,所以不需要删除任何内容。如果您设置了父级,Qt会自行删除这些小部件。在这里,它只是对窗口的形态和位置有影响。如果你想设置一个父元素,你可以在你的上下文中使用"this“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32476636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档