我已经设置了一个基本的 Qt-Widgets-Application(Qt 5.5 社区),其中包含一个简单的 QWidget“MainWindow”和一个附加的 QWidget“SettingsScreen”。
在“MainWindow”中,触摸屏事件(由操作系统处理)按预期工作,但打开“SettingsScreen”后,所有触摸事件都在桌面上执行,直到我使用鼠标或键盘关闭“SettingsScreen”。
环境:
- Ubuntu Studio 14.04.03
- Qt 5.5 开源版
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QWidget>
#include <settingsscreen.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QWidget
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_btnExit_clicked();
void on_btnSettings_clicked();
private:
Ui::MainWindow *ui;
SettingsScreen *wSettingsScreen;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "settingsscreen.h"
#include "ui_settingsscreen.h"
MainWindow::MainWindow(QWidget *parent) : QWidget(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_btnExit_clicked()
{
this->close();
}
void MainWindow::on_btnSettings_clicked()
{
wSettingsScreen = new SettingsScreen(parentWidget());
wSettingsScreen->show();
}
settingsscreen.h
#ifndef SETTINGSSCREEN_H
#define SETTINGSSCREEN_H
#include <QWidget>
namespace Ui {
class SettingsScreen;
}
class SettingsScreen : public QWidget
{
Q_OBJECT
public:
explicit SettingsScreen(QWidget *parent = 0);
~SettingsScreen();
private slots:
void on_pushButton_clicked();
void on_btnBack_clicked();
private:
Ui::SettingsScreen *ui;
};
#endif // SETTINGSSCREEN_H
settingsscreen.cpp
#include "settingsscreen.h"
#include "ui_settingsscreen.h"
SettingsScreen::SettingsScreen(QWidget *parent) :
QWidget(parent),
ui(new Ui::SettingsScreen)
{
ui->setupUi(this);
}
SettingsScreen::~SettingsScreen()
{
delete ui;
}
void SettingsScreen::on_btnBack_clicked()
{
this->close();
}
我刚刚开始使用 Qt 进行开发,所以如果我遗漏了一些重要的东西,请原谅我:)
任何帮助都将受到高度赞赏!!
提前谢谢您!
最佳答案
实际上,QMainwindow 或应用程序的任何基本小部件都能够正确地将未处理的触摸屏事件合成为鼠标事件。因此,每当您创建对话框/小部件时,请确保将 Mainwindow 设置为父窗口,并在子小部件的构造函数中使用 setParent(parent)。即使我也面临着这种问题,这对我很有用。
关于c++ - Qt 5.5 - 触摸屏事件仅在初始(第一个)窗口中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32624666/