Название: ScrollArea без scrollbar'ов
Отправлено: AfterEarth от Январь 12, 2011, 06:29
Здравствуйте! Подскажите, пожалуйста, как сделать ScrollArea без скроллбаров, а в качестве кнопок прокрутки использовать 2 виджета со стрелками (справа и слева)? Пробовал убирать скроллбары просто через hide() - пропадает возможность прокрутки :( Вот код: body_layout = new QHBoxLayout(); //body
body_layout->setAlignment(Qt::AlignVCenter);
leftScroll = new QPushButton(this); leftScroll->setFixedSize(37,53); leftScroll->setIcon(QIcon(":/images/scrollButtonLeft.png")); leftScroll->setIconSize(QSize(37,53));
leftScroll->setFlat(true);
body_layout->addWidget(leftScroll);
catalog_body = new QWidget(this); catalog_body->setObjectName("catalog_body"); catalog_body->resize(body->width()-74,body->height());
gr = new QGridLayout (catalog_body); //body gr->setSizeConstraint(QLayout::SetMinimumSize);
int current_row = 1; int current_column = 1; int s; do { QString category_id = query->value(0).toString(); QString category_name = query->value(1).toString(); category_Labels.append(new category_Label(catalog_body,category_id, category_name)); //this s = category_Labels.last()->width(); gr->addWidget(category_Labels[category_Labels.count()-1],current_row,current_column); connect(category_Labels[category_Labels.count()-1], SIGNAL(clicked()), this, SLOT(get_Signal())); if (current_row<row_count) current_row++; else { current_row =1; current_column ++; } } while(query->next());
body_layout->setAlignment(Qt::AlignHCenter); catalog_body->setLayout(gr); sa = new QScrollArea(this);//(body); sa->setWidget(catalog_body); sa->setFrameStyle(QFrame::NoFrame);
body_layout->addWidget(sa);
rightScroll = new QPushButton(this);
QIcon rightScrollIcon; rightScrollIcon.addFile(QString::fromUtf8(":/images/scrollButtonRight.png"), QSize(37,53), QIcon::Normal, QIcon::Off); rightScrollIcon.actualSize(QSize(37,53), QIcon::Normal, QIcon::Off); rightScroll->setIcon(rightScrollIcon); rightScroll->setIconSize(QSize(37,53)); rightScroll->setFlat(true);
body_layout->addWidget(rightScroll);
if ((s*col_count) <= body->width()) { leftScroll->hide(); rightScroll->hide(); } body->setLayout(body_layout);
Версия: Qt 4.7.0 Заранее благодарен за ответ!
Название: Re: ScrollArea без scrollbar'ов
Отправлено: Fat-Zer от Январь 12, 2011, 07:40
sa->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); Не оно?
Название: Re: ScrollArea без scrollbar'ов
Отправлено: AfterEarth от Январь 12, 2011, 10:28
Хм, странно-сейчас виджеты внутри ScrollArea не сжались, как раньше. Спасибо! :) Так уже делал правда, но с другим результатом.. Надо будет прокрутку попробовать к кнопкам привязать...
|