Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QDialog не убирается на экране
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
JuryS1806
Всем доброго времени суток. Имею QDialog, размер которого может быть разным в процессе работы программы.

И в некоторых случаях он не убирается на экране. При этом его невозможно переместить и соответственно часть диалога остается не рабочей

Попробовал вместо QDialog использовать QScrollArea. Таже ситуация.
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); также не помогает. отрисовывает вертикальную прокрутку, но ничего не происходит

Если делаю setFixedHeight(600);
то все виджеты уменьшаются то нечитабельно размера и все тут !

Прошу помочь :unsure:

Все заработало !

Сделал так:
     QScrollArea *scrollView = new QScrollArea();
    ConeEditDialog* dialog = new ConeEditDialog(LabObject,CurrentPrs,myContext);
    scrollView->setWidget(dialog);
    scrollView->show();
JuryS1806
Еще более изящное решение проблемы:

Создаю класс : public QScrollArea

как обычно создаю layout объектов, дальше помещаю его в QWidget и во избежание всяких кособоких отображений просчитываю геометрию, исходя из разрешения экрана:

QWidget *myWidget = new QWidget();
myWidget->setLayout(mainLayout);
setWidget(myWidget);

int myHeight, myWidth, myPosX, myPosY,isScroll=5;
if (myWidget->height()>QApplication::desktop()->height()-100)
{
    myHeight = QApplication::desktop()->height()-100;
    isScroll = 20;
}
else myHeight = myWidget->height()+5;
myWidth = myWidget->width()+isScroll; //+20 если будет скроллбар вертикальный
myPosX = QApplication::desktop()->width()/2-myWidth/2;
myPosY = (QApplication::desktop()->height() - myHeight)/2;
          setGeometry(myPosX,myPosY,myWidth,myHeight);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.