Using QFileDialog with QWindow
Using QFileDialog with QWindow
我尝试用OpenGL实现一个应用程序,因此,正如下面的例子所示,我使用QWindow来创建一个OpenGL上下文。
http://doc.qt.io/qt-5/qtgui-openglwindow-example.html在这个应用程序中,我想在按S键时创建一个文件对话框。然而,QFileDialog::getSaveFileName
需要QWidget
的父节点。文档说,如果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"
是的,它应该是安全的。由于不动态分配内存,因此不必删除任何内容。如果你设置了父母,Qt会自己删除小部件。在这里,它只影响窗口的形态和位置。如果你想设置父节点,你可以在你的上下文中使用"this"。
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image
- Pybind11: init<> with lambda
- Using QFileDialog with QWindow