Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автоматический пересчет размеров формы
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
KuvshinoF
Есть класс-наследник от MyDialog (наследник от QDialog) с QLabel-ом, в который выводится заданный текст (произвольной ширины). Мне нужно вывести этот диалог ТОЧНО ПО ЦЕНТРУ его родителя (размеры родителя передаются параметром ParentGeometry). Проблема в том, что при ПЕРВОМ отображении этой формы (setGeometry в showEvent) ее размеры неверны (в width() и height() хранятся предыдущие размеры этой формы)...проблема решается двойным вызовом hide(), show() этой формы, но хотелось бы сделать покрасивее...так как ширина формы должна подстраиваться под ширину текста, то для формы стоит layoutSizeConstraint=FixedSize...(кстати выводимый текст может быть многострочным и разноширинным, поэтому принудительно задавать setFixedSize для формы перед ее отображением затруднительно)
 class MyClass: public  MyDialog ….
//-------------------------------------------------------------------------------------
void MyClass::Message(QRect &ParentGeometry,  QString &text)
{
  ui->LabelText->setText(text);
  this->setParentGeometry(ParentGeometry);
  this->show();
}
//-------------------------------------------------------------------------------------
class MyDialog: public QDialog ….
//-------------------------------------------------------------------------------------
void MyDialog::setParentGeometry(QRect &Geometry)
{
  ParentGeometry = Geometry;
}
//------------------------------------------------------------------------------------
void MyDialog::showEvent(QShowEvent *)
{
setGeometry(ParentGeometry.x() + 0.5*(ParentGeometry.width() - this-    
>width()), ParentGeometry.y() + 0.5*(ParentGeometry.height() - this->height()),this->width(),this->height());
}
//-------------------------------------------------------------------------------------
MyClass objMyClass;
Button1_Onclick:
objMyClass. Message(QRect(0,0,1280,1024), trUtf8(«hello»));  // вариант 1

после закрытия формы варианта 1
Button2_Onclick:
objMyClass. Message(QRect(0,0,1280,1024), trUtf8(«hello everybody from me»)); // вариант 2
форма отобразится смещенной (так как ее размеры будут еще пока из варианта 1, при последующих вызовах варианта 2 все будет как надо)






Litkevich Yuriy
когда ты диалогу задаёшь parent он автоматически по центру parent-а появляется
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.