我有一个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。