我有一个QDialog
包含QLineEdit
和一些按钮的基础类。使用上下文菜单事件调用它,QGraphicsScene
我希望它的行为如下:
QLineEdit
调用时自动聚焦(存在ui->lineEdit->setFocus()
于构造函数中)- 没有任务栏图标和框架(如
Qt::Popup
标志) - 主窗口上的模态
parent=0
使用parent = 0
满足 1 并提供模态,还提供框架和任务栏图标。
Qt::Popup
单独删除框架和任务栏图标,但也破坏了焦点lineEdit
和模态。
我将不胜感激任何建议,因为我有很多时间试图找到不同WindowFlags
等的正确组合。主要问题似乎是,当任何WindowFlag
应用或parent
小部件被定义时,焦点lineEdit
完全消失了。
void GraphicsScene::resolveContextMenuAction_(QAction *action)
{
if(action == this->contextMenuEventOpenDialog_)
{
TestDialog* DWD = new TestDialog(0);
//this->DWD->setWindowFlags(Qt::Popup)
int result = DWD->exec();
...
}
}
构造函数:
TestDialog::TestDialog(QWidget *parent) : QDialog(parent), ui(new Ui::TestDialog)
{
this->ui->lineEdit->setFocus();
}
还调整了焦点标签顺序,使其lineEdit
成为第一个。在最坏的情况下,Qt::Popup
如果只有提到的其他功能存在,我不会接受任何形式。
如果它依赖于操作系统 - 我使用的是 Ubuntu 12.04。