Russian Qt Forum
Сентябрь 30, 2024, 14:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Вопрос по скроллам  (Прочитано 5650 раз)
_arti_
Гость
« : Май 25, 2007, 07:11 »

Ребята проясните ситуацию. Относительно недавно начал изучать Qt, поэтому некоторые моменты еще не понятны.

Добавляю на форму кнопки QPushButton, сверху вниз. Этих кнопок такое количество, что некоторые не помещаются на форме. Они становятся видны, если изменить размер формы. Вопрос в том, как сделать, чтобы автоматически появлялся скролл при добавлении кнопок, которые на помещаются в размер формы?
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #1 : Май 25, 2007, 08:08 »

Если кнопки не видны без изменения размера формы, значит ты не применяешь Layout ( элементы расположения ).
Если форма с кнопками не помещается на экране значит неправильная концепция построения формы.
В противном случае, помещай кнопки на widget произвольных (необходимых) размеров, а уже этот  widget с кнопками в QScrollArea размещенную на форме.

Для того чтобы скролл автоматически появлялся необходимо предварительно переопределить QScrollArea и создать его плагин для дизайнера.
А для начала советую "учиться, учиться и еще раз учиться". Изучай примеры, документацию и т.п. на кокретных прикладных задачах.
Записан
SABROG
Гость
« Ответ #2 : Май 25, 2007, 08:41 »

Цитировать

Если форма с кнопками не помещается на экране значит неправильная концепция построения формы.


А если приложение проектировалось на мощной тачке, где разрещение огромное, все помещается, а потом было перенесено на слабенькую машинку где разрешение 640x480, врятли скролл откуда-то возмется, а вот caption уползет куда-нибудь далеко вверх.

2_arti_: посмотри пример \examples\widgets\imageviewer\ если картинка больше окна, то появляются скролы, если меньше, то убираются. Простановкой свойств не обойтись, придется пописать код.
Записан
_arti_
Гость
« Ответ #3 : Май 25, 2007, 08:52 »

Цитата: "Mikhail"

В противном случае, помещай кнопки на widget произвольных (необходимых) размеров, а уже этот  widget с кнопками в QScrollArea размещенную на форме.


не работает, мож чего-то не понимаю, а?
Выношу код на суд.

#include <QApplication>
#include <QWidget>
#include <QScrollArea>
#include <QPushButton>
#include <QHBoxLayout>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
   
   QWidget w;
   QScrollArea *area = new QScrollArea(&w);

   area->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

   QWidget *wid = new QWidget(area);
   
   QPushButton *b1 = new QPushButton("button1", wid),
            *b2 = new QPushButton("button2", wid),
            *b3 = new QPushButton("button3", wid),
            *b4 = new QPushButton("button4", wid);

   b1->setGeometry(5, 5, 50, 30);
   b2->setGeometry(5, 40, 50, 30);
   b3->setGeometry(5, 75, 50, 30);
   b4->setGeometry(5, 110, 50, 30);

   //area->setWidget(wid);

   w.show();
    return app.exec();
}
Записан
Mikhail
Программист
*****
Offline Offline

Сообщений: 587


Просмотр профиля
« Ответ #4 : Май 25, 2007, 09:44 »

получай рабочий код:

#include <QApplication>
#include <QWidget>
#include <QScrollArea>
#include <QPushButton>
#include <QHBoxLayout>

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

QWidget w;
QVBoxLayout *mainLayout = new QVBoxLayout;
QScrollArea *area = new QScrollArea(&w);


QWidget *wid = new QWidget;
wid->setMinimumWidth( 200);
wid->setMinimumHeight( 200);
QPushButton *b1 = new QPushButton( "button1",wid ),
*b2 = new QPushButton("button2", wid),
*b3 = new QPushButton("button3", wid),
*b4 = new QPushButton("button4", wid);

b1->setGeometry(5, 5, 50, 30);
b2->setGeometry(5, 40, 50, 30);
b3->setGeometry(5, 75, 50, 30);
b4->setGeometry(5, 110, 50, 30);

area->setWidget(wid);
mainLayout->addWidget( area );
w.setLayout(mainLayout);
w.resize ( 300, 300 );
w.show();
return app.exec();
}
Записан
_arti_
Гость
« Ответ #5 : Май 25, 2007, 10:13 »

Ребята спасибо, все заработало, нашел свои ошибки. )))
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #6 : Май 25, 2007, 11:33 »

Цитата: "SABROG"

А если приложение проектировалось на мощной тачке, где разрещение огромное, все помещается, а потом было перенесено на слабенькую машинку где разрешение 640x480, врятли скролл откуда-то возмется, а вот caption уползет куда-нибудь далеко вверх.


А это уже говорит о неудачном проектировании самого гуя. Такие ситуации разработчик должен знать и принимать во внимание при разработке приложения
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.049 секунд. Запросов: 22.