crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> QDialog не убирается на экране, Добавить ScrollBar
JuryS1806
  опции профиля:
сообщение 31.1.2010, 5:34
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Всем доброго времени суток. Имею 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
  опции профиля:
сообщение 31.1.2010, 6:35
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 93
Регистрация: 21.10.2009
Из: Нижний Новгород
Пользователь №: 1168

Спасибо сказали: 9 раз(а)




Репутация:   0  


Еще более изящное решение проблемы:

Создаю класс : 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);


Сообщение отредактировал JuryS1806 - 31.1.2010, 7:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.10.2022, 0:58