Qt QDialog不';如果是模态,则不接受文本输入
Qt对话框(Qt4.6/windows)的奇怪错误 如果对话框是从主窗口(从工具栏/或菜单操作)启动的,并且是模式对话框,则所有文本框都不会接受任何编辑。其他控件(下拉、按钮等)全部工作 如果我使用show()而不是exec()将对话框设置为非模态,那么它将非常有效 有人遇到过这样的事情吗 示例代码:Qt QDialog不';如果是模态,则不接受文本输入,qt,qt4,dialog,Qt,Qt4,Dialog,Qt对话框(Qt4.6/windows)的奇怪错误 如果对话框是从主窗口(从工具栏/或菜单操作)启动的,并且是模式对话框,则所有文本框都不会接受任何编辑。其他控件(下拉、按钮等)全部工作 如果我使用show()而不是exec()将对话框设置为非模态,那么它将非常有效 有人遇到过这样的事情吗 示例代码: #include "ui_testDlg.h" class TestDlg : public QDialog, public Ui::TestDlg { Q_OBJECT;
#include "ui_testDlg.h"
class TestDlg : public QDialog, public Ui::TestDlg
{
Q_OBJECT;
public:
TestDlg(QWidget *parent=0) {
setupUi(this);
}
~TestDlg(void) {}
private:
Ui::TestDlg ui;
};
TestDlg.ui是QDesigner中创建的最简单的对话框+行编辑控件
void MainWindow::onTest()
{
TestDlg *test = new TestDlg(this);
test->show(); // works
//or
test->exec(); // opens dlg but can't type in it!
}
编辑:如果我只使用QInputWidget,这是同样的问题——这只是MainWindow中的一个问题。所以一定是我在阻塞/消耗某些信号?您可以将TestDlg和Ui::TestDlg之间的关系从子类化更改为私有成员
#include "ui_testdlg.h"
class TestDlg: public QDialog {
Q_OBJECT
public:
TestDlg(QWidget *parent = 0) : QDialog(parent), ui(new Ui::TestDlg)
{
ui->setupUi(this);
}
~TestDlg()
{
delete ui;
}
private:
Ui::TestDlg*ui;
};
QtCreator默认使用这样的新窗口小部件类,通过这种设置,我对
QLineEdit
没有任何问题。(WinXP上的Qt4.6)我也遇到了同样的问题。我为我的案子想出了一个解决方案,我不确定它对你的案子是否也有用
所以基本上我要创建一个登录对话框。在显示主窗口之前,首先显示登录对话框。如果登录失败,我就退出我的程序
我的代码如下所示:
MainWindow w;
LoginDialog loginDialog;
loginDialog.exec();
w.init();
w.showApp();
当登录对话框出现时,其上的lineEdit无法接受任何文本输入
但如果我以这种方式重新组织代码:
LoginDialog loginDialog;
loginDialog.exec();
MainWindow w;
w.init();
w.showApp();
lineEdit现在可以工作了。我猜主窗口的构造函数中有什么东西弄乱了事件循环。您能提供一个发生这种情况的最小示例吗?当您明确地运行
setModal(true)时会发生什么;show()。也许你可以发布你的ui文件?如果我使用QInputWidget::也是一样的问题,所以它一定是我在主窗口中设置的,我正在捕获的一些信号