Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чем скроллить кучу текста, кнопок, полей ввода? 
:(
    Опции темы
gustavomarginale
Дата 17.5.2011, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Решение: создать большой виджет, напихать на него кучу других виджетов и запихнуть этот большой виджет в QScrollWidget. Под linux никаких проблем нет, но под windows qt ограничивает размер QWidget размером экрана, поэтому большой полотно с ништяками для засовывания в QScrollWidget создать не удаётся.

Как бы мне скроллить большое "полотно", утыканное кусками текста, кнопками и прочим? Нужно отобразить вертикальный список входящих сообщений наподобие форума, но в силу однообразности сообщений нецелесообразно применять ресурсоёмкий встроенный в Qt броузер. Поэтому нескольких вертикальных многострочных QLabel (многострочность которых, по иронии судьбы, будет обеспечена втыканием в текст HTML-тега <br>, а наличие внутри QLabel HTML-интерпретатора, от которого я так активно отпираюсь, позволяет ещё и цвета текста разные использовать) мне хватит.

На чём все эти ништяки рисовать, раз QWidget большой не может быть создан под windows? Есть ли что-то другое, что может быть большим, содержать "на себе" виджеты типа QLabel, QPushButton и быть скроллимым каким-нибудь скроллером? Или может написать свой QScrollWidget? Тогда как можно отображать кусочек этого чего-то (что мне ещё не посоветовали) большого с кнопками и текстами?

Спасибо.
PM MAIL   Вверх
borisbn
Дата 18.5.2011, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



что такое QScrollWidget - не знаю. С QScrollArea работает. под Windows
Код

Widget::Widget(QWidget *parent) :
    QWidget( parent ),
    ui( new Ui::Widget )
{
    ui->setupUi( this );

    QWidget * w = new QWidget( this );
    w->resize( 1000, 2000 );
    QScrollArea * sa = new QScrollArea( this );
    ui->gridLayout->addWidget( sa );
    sa->setWidget( w );
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
gustavomarginale
Дата 18.5.2011, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Цитата(borisbn @ 18.5.2011,  01:30)
что такое QScrollWidget - не знаю. С QScrollArea работает. под Windows
Код

Widget::Widget(QWidget *parent) :
    QWidget( parent ),
    ui( new Ui::Widget )
{
    ui->setupUi( this );

    QWidget * w = new QWidget( this );
    w->resize( 1000, 2000 );
    QScrollArea * sa = new QScrollArea( this );
    ui->gridLayout->addWidget( sa );
    sa->setWidget( w );
}


Да, имелся ввиду QScrollArea.

Смотрите какая история под windows:

Код

QWidget *x = new QWidget();
x -> resize ( 1000, 2000 );
std::cout << "::: " << x->width() << ", " << x->height() << "\n";
x->resize(1000, 4000);
std::cout << "::: " << x->width() << ", " << x->height() << "\n";
x->show();
std::cout << "::: " << x->width() << ", " << x->height() << "\n";


Вывод:
::: 1000, 2000
::: 1000, 4000
::: 1000, 1035
PM MAIL   Вверх
borisbn
Дата 18.5.2011, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



да, есть такое, но только, если widget - топовое окно. если же он лежит в scrollArea - то всё в порядке
Код

Widget::Widget(QWidget *parent) :
    QWidget( parent ),
    ui( new Ui::Widget )
{
    ui->setupUi( this );

    QWidget * w = new QWidget( this );
    w->resize( 1000, 2000 );
    QScrollArea * sa = new QScrollArea( this );
    ui->gridLayout->addWidget( sa );
    sa->setWidget( w );
    qDebug() << "::: " << w->width() << ", " << w->height() << "\n";    
}

Цитата

:::  1000 ,  2000 



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
gustavomarginale
Дата 18.5.2011, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Значит причина в доставании виджета из QScrollArea. Его нельзя "достать-запихнуть" после того, как единожды его туда засунул. Странно.

Код

QWidget *x = new QWidget();
x -> resize ( 1000, 2000 );
std::cout << "::: " << x->width() << ", " << x->height() << "\n";
x->resize(1000, 4000);
std::cout << "::: " << x->width() << ", " << x->height() << "\n";

QScrollArea *s = new QScrollArea();
s -> setWidget(x);
s->show();
std::cout << "::: " << x->width() << ", " << x->height() << "\n";
s->takeWidget();
s->setWidget(x);
std::cout << "::: " << x->width() << ", " << x->height() << "\n";


::: 1000, 2000
::: 1000, 4000
::: 1000, 4000
::: 1000, 1035

Это сообщение отредактировал(а) gustavomarginale - 18.5.2011, 11:48
PM MAIL   Вверх
borisbn
Дата 18.5.2011, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Цитата(gustavomarginale @  18.5.2011,  11:44 Найти цитируемый пост)
Его нельзя "достать-запихнуть" после того, как единожды его туда засунул

А надо ? Или это уже чисто спортивный интерес ?


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
gustavomarginale
Дата 18.5.2011, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Цитата(borisbn @ 18.5.2011,  12:44)
Цитата(gustavomarginale @  18.5.2011,  11:44 Найти цитируемый пост)
Его нельзя "достать-запихнуть" после того, как единожды его туда засунул

А надо ? Или это уже чисто спортивный интерес ?

Не надо. Спортивный. Научный.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1159 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.