1

我创建了一个这样的弹出窗口:

QFileInfo FileA = "AAA";  
QFileInfo FileB = "BBB";   

if (fileA.exists() == false & (fileB.exists() == false))
      {
          QFrame* PopupWin = new QFrame(this, Qt::Popup | Qt::Window  );
          PopupWin->setGeometry(450,450, 400, 200);
          PopupWin->setLineWidth ( 3 );
          PopupWin->setMidLineWidth ( 1 );
          PopupWin->setFrameStyle ( QFrame::Box | QFrame::Raised);
          QLabel *message = new QLabel(PopupWin);
          message->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
          message->setGeometry(100,50, 200, 100);
          message->setText("blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
                             "bluuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu"
                             "bliiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii"
                             "bleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
                             "bloooooooooooooooooooooooooooooooooooooooooooooo");
          PopupProzess->show();

      }

我有三个问题:

  • 当窗口弹出时,我看不到整个文本,只能看到标签第一行的一部分。我怎样才能显示整个文本?
  • 单击屏幕上的任意位置时,框架会关闭。如何禁用此“任何地方单击关闭”并创建一个按钮或一种关闭框架/窗口的十字?
  • 如何将文本直接放入标签并将标签放入框架?

我在 Qt Doc 中搜索并搜索,但没有找到解决方案。问候

4

1 回答 1

1

你为什么要创建一个QFrame?你想要的是一个QDialog.

  • 使用QtDesigner来设计你的对话框
  • 实现一个类继承自QDialog对应于您设计的对话框
  • 用于exec以模态方式显示它。

这样你的代码会更干净,更容易阅读。

QDialog* pMyDialog = new MyDialog(this); // you have to delete it later...
if (fileA.exists() == false && (fileB.exists() == false))
{
       pMyDialog->exec(); 
}

此外,没有理由对 UI 元素的几何图形进行硬编码。这是QtDesigner为了什么。

关于标签,因为 spbots 已经回答您必须设置wordWrap属性。

于 2012-03-13T09:27:22.053 回答