2012-03-12 31 views
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文檔搜索,也搜索了,但沒有找到解決方案。問候

+0

請參閱'QLabel :: wordWrap'來顯示整個標籤:[link](http://qt-project.org/doc/qt-4.8/qlabel.html#wordWrap-prop) – spbots 2012-03-12 23:02:00

+0

我剛剛嘗試過Qt設計器,它沒有工作,現在我重試它,它的工作原理。一定是第一次做錯了。 thx爲tip.Anyway QLabel :: setWordWrap(true)現在爲我工作。 – Streight 2012-03-13 00:24:25

回答

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屬性。

+0

你說得對。我以專業的方式去做。 :) – Streight 2012-03-13 12:57:21