我有一个基于QDialog
的类,其中包含QLineEdit
和一些按钮。它是使用来自QGraphicsScene
的上下文菜单事件调用的。我希望它的行为如下:
QLineEdit
上的自动对焦(构造函数中存在ui->lineEdit->setFocus()
)Qt::Popup
标志相同)parent=0
使用parent = 0
履行1并提供模态,但也提供框架和任务栏图标。
Qt::Popup
单独删除了框架和任务栏图标,但也会破坏对lineEdit
和模态的关注。
我会感激任何建议,因为我有很多时间试图找到不同WindowFlags
等的正确组合。主要问题似乎是当应用任何WindowFlag
或{时{1}}小部件被定义为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
一样的模态。
如果它依赖于操作系统 - 我正在使用Ubuntu 12.04。
答案 0 :(得分:0)
试试setWindowFlags(Qt :: Tool)怎么样? 不要调用exec(),这不是一个好方法,调用setModal(true)然后show()而不是将显示模态对话框,并调用activateWindow将setfocus调用到工具窗口.lineeidt将自动聚焦。 如果你不想要一个窗口的框架和边框,rty Qt :: FramelessWindowHint标志。 在构造函数中调用setFocus没有用。