为什么虚拟键盘不适用于QT中的QDialog TextBox
Why virtual keyboard does not work with QDialog textbox in Qt?
我为键盘更少的设备提供了应用程序。我将ThisRef用于键盘作为虚拟键盘。我的项目中有一个对话框,其中有两个文本框(其中一个用于输入用户名,另一个用于输入密码),带有两个按钮:确定和取消。构建项目并运行后,按菜单按钮显示菜单表单,然后对话框似乎检查用户身份验证。用户应在文本框上输入数据虚拟键盘。出现虚拟键盘(本Ref中的输入面板),但按钮不起作用。当我搜索时,我看到了"听起来您正在尝试从对话框中打开另一个窗口 - 这是您的错误。当然,对话框将保持在顶部 - 这就是它的工作。"因为对话框是模态,所以虚拟键盘是禁用的无论如何是否可以编辑对话框或键盘以在模态小部件中工作?
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "myinputpanelcontext.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyInputPanelContext *ic= new MyInputPanelContext; ;
a.setInputContext(ic);
MainWindow w;
//w.show();
w.showFullScreen();
w.centralWidget()->releaseKeyboard();
return a.exec();
}
mainwindow.cpp:
MyDialog *d=new MyDialog(this);
d.exec();
它已解决:
模态对话框以exec()启动,它们会在嵌套事件循环运行时阻止程序流。show()启动了无调对话框,它们不会阻止程序流。
来自http://www.qtforum.org/article/14285/modeless-dialog.html我使用此代码:
MyDialog *d=new MyDialog(this);
d->show();
d->raise();
q->activewindows();
而不是此代码:
MyDialog *d=new MyDialog(this);
d.exec();
作为文档参考:
一个无模式对话框:void editorwindow :: find(){
if (!findDialog) {
> findDialog = new FindDialog(this);
> connect(findDialog, SIGNAL(findNext()), this, SLOT(findNext()));
> } findDialog->show();
> findDialog->raise();
> findDialog->activateWindow(); }
从这里
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- .cpp和.h文件中的模板专用化声明
- 反向给定链表中的K节点
- 正在查找文档以获得PS4平台的C++中的设备信息
- enum是C++中的宏变量还是整数变量
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将字符串存储在c++中的稳定内存中
- 如何通过 Qdialog 中的 qtablewidget 填充作为 MainWindow 成员的 qvector
- 如何从另一个QDialog访问comboBox的文本并将其写入该对话框中的lineEdit
- MFC App中的QT DLL-如何使Qdialog *真正 *模式
- 如何在qdialog中使用螺纹填充Qcombobox中的数据
- 从Qt中的QDialog中删除WindowSystemMenuHint
- 为什么虚拟键盘不适用于QT中的QDialog TextBox
- 来自 MainWindow 中的 QDialog 全屏仅有时工作
- 从QDialog调用QMainWindow中的方法
- 析构函数 Qt QDialog 中的分段错误
- 将 MFC 转换为 QT"就地"端口 - QWinWidget 中的 QDialog 未捕获 Ctrl-X、Ctrl-V 等
- 使用信号和插槽与Qt中的主窗口通信QDialog
- 显示QtDesigner中创建的QDialog
- 如何在Windows 10中获得QDialog的HWND