Всплывающее окно.Как показать полнотекстовый контент и два других вопроса - PullRequest
1 голос
/ 13 марта 2012

Я создал всплывающее окно следующим образом:

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 Ответ

1 голос
/ 13 марта 2012

Почему вы создаете 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(); 
}

Также нет причин жестко задавать геометрию элемента пользовательского интерфейса. Вот для чего QtDesigner.

Относительно метки, поскольку spbots уже ответил, вы должны установить свойство wordWrap.

...