弹出窗口。如何显示全文内容和另外两个问题

时间:2012-03-12 22:01:07

标签: c++ qt popup qlabel

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

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中搜索并搜索,但没有找到解决方案。问候

1 个答案:

答案 0 :(得分: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属性。