QTCreator opengl mainwindow app - how to pass toolbar events into my sublcassed qglwidget?
-
I created my first QT opengl app (4.8.3), and it displays the hardcoded png file just fine. Now I want to use the QFileDialog and select different image files. I've created a method in my glwidget class to receive the new filename, but this class has no visibility in the MainWindow. Even with slots & signals, I have nothing to hang the call on in my MainWindow.
-
Figured it out with a little c++ obfuscation.
in my mainwindow.cpp definition
@
#include "glwidget.h"
@the method that gets the filename from the QFileDialog - after pressing a toolbar button that calls this slot:
@
void MainWindow::on_actionLoadImage_triggered()
{
QString strFilename = QFileDialog::getOpenFileName(this, "Open File", "", "Files (.)");
QWidget *cw = centralWidget();
if (strFilename.length() > 0)
((glwidget *)cw)->loadImage(strFilename);
}
@
In my glwidget.h file,
@
public slots:
int loadImage(QString & filename);
@
and in the glwidget.cpp file there is a method definition.In the VS2010 debug environment, the call went through to the method definition code.
-
Boy my reply looks ugly. How do folks post code that looks like code in this forum?
-
Let me prettify that for you... by sprinkling code markups over your post:-) Check the icons on top of the message window. The one to the far right is the one you want.
-
You could create an ordinairy mainwindow (Qtcreator will do that for you when you create a new project) and add an QGLWidget as child:
OGLWin = new OGLWindow(...)
This way you can handle all the GUI stuff via the mainwindow and the OpenGl stuff in the QGLWidget.