[Interest] Menu causes problems on OS X

john at wavemetrics.com john at wavemetrics.com
Wed May 11 22:46:21 CEST 2016


https://bugreports.qt.io/browse/QTBUG-53315



> On May 10, 2016, at 11:51 AM, John Weeks <john at wavemetrics.com> wrote:
> 
> The very simple application posted below (it is a complete runnable example) creates a window that puts up a menu on clicking in the window. If you select "Open File..." it then puts up a QFileDialog to choose a file. Upon returning, the window no longer appears to active. Experience with our real application where we observe this behavior suggests that Qt thinks the window is still active, but OS X does not. This causes other strange problems.
> 
> Application works as expected on Windows.
> 
> I am inclined to believe this is a Qt bug. But I would be interested to know what others think, and if you might know of a work-around.
> 
> Thanks!
> 
> -John Weeks
> 
> #include <QApplication>
> #include <QMainWindow>
> #include <QMouseEvent>
> #include <QFileDialog>
> #include <QString>
> #include <QDebug>
> #include <QMenu>
> #include <QAction>
> 
> class MainWindow : public QMainWindow
> {
> 	public:
> 		explicit MainWindow(QWidget *parent = 0);
> 		~MainWindow();
> 
> 	protected:
> 		void	mouseReleaseEvent(QMouseEvent * event);
> 
> 	private:
> };
> 
> MainWindow::MainWindow(QWidget *parent) :
> 	QMainWindow(parent)
> {
> }
> 
> MainWindow::~MainWindow()
> {
> }
> 
> void MainWindow::mouseReleaseEvent(QMouseEvent * event)
> {
> 	QMenu menu;
> 	menu.addAction("Open File...");
> 	QAction * selectedAction = menu.exec(event->globalPos());
> 
> 	if (selectedAction)
> 	{
> 		QFileDialog::Options options = 0;
> 		// options |= QFileDialog::DontUseNativeDialog;
> 		QString fullQtPath = QFileDialog::getOpenFileName(NULL, QStringLiteral("Dialog Caption"), QString(), QString(), nullptr, options);
> 		qDebug() << fullQtPath;
> 	}
> }
> 
> int main(int argc, char *argv[])
> {
> 	QApplication a(argc, argv);
> 	MainWindow w;
> 	w.show();
> 
> 	return a.exec();
> }




More information about the Interest mailing list