回复: 接近完美的虚拟键盘之中文输入法
#6 [xdh873939316 03-25 10:42]
自带的也好看,可以模仿一下。
#7 回 xdh873939316 的帖子 [笑颜 03-25 12:56]
xdh873939316:
自带的也好看,可以模仿一下。 (2019-03-25 10:42)
自带的有BUG,不能在dialog窗口上输入,不信你试试,比如QFileDialog窗口输入,这个是QML一直没解决的问题!
#8 回 笑颜 的帖子 [liudianwu 03-25 15:41]
笑颜:自带的有BUG,不能在dialog窗口上输入,不信你试试,比如QFileDialog窗口输入,这个是QML一直没解决的问题! (2019-03-25 12:56)
如果是dialog窗体,请在dialog窗体exec前增加一行代码,否则会阻塞窗体消息。
QDialog dialog;dialog.setWindowModality(Qt::WindowModal);
#9 回 liudianwu 的帖子 [笑颜 03-25 16:10]
liudianwu:如果是dialog窗体,请在dialog窗体exec前增加一行代码,否则会阻塞窗体消息。
QDialog dialog;dialog.setWindowModality(Qt::WindowModal); (2019-03-25 15:41)
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
这样的用法咋办呢?
官方的方法是用open替换exec:https://bugreports.qt.io/browse/QTBUG-73092?filter=-2
但是还是有上面个问题!
#10 回 笑颜 的帖子 [liudianwu 03-25 20:27]
笑颜:
fileName = QFileDialog::getOpenFileName(this,
tr("Open Image"), "/home/jana", tr("Image Files (*.png *.jpg *.bmp)"));
这样的用法咋办呢?
.......
这个很简单,查看getOpenFileName的源码,按照其重新写一个,在其基础上增加一行 dialog.setWindowModality(Qt::WindowModal);
放在公共静态类引用就可以了。
QString frmInputTool::getFileName(const QString &filter, const QString &defaultDir, const QString &fileName)
{
QString file;
QFileDialog dialog;
dialog.setFixedSize(900, 600);
dialog.setWindowModality(Qt::WindowModal);
dialog.setWindowTitle("保存文件");
dialog.setLabelText(QFileDialog::Accept, "保存(&S)");
dialog.setLabelText(QFileDialog::Reject, "取消(&C)");
dialog.selectFile(fileName);
dialog.setNameFilter(filter);
dialog.setDirectory(defaultDir);
if (dialog.exec() == 1) {
file = dialog.selectedFiles().value(0);
file = QFileInfo(file).suffix().isEmpty() ? "" : file;
}
return file;
}