Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2012, 23:27   #1
derElektroBesen
Пользователь
 
Регистрация: 17.07.2011
Сообщений: 24
Печаль QScrollArea

Имеется следующий код:
Код:
QDialog *PatientDialog::CreateDialog(QString tabName)
{
    // Генерируем диалог создания карточки пациента
    QWidget *w = new QWidget();
    QDialog *d = new QDialog(w);
 
    QSizePolicy sizePolicy;
    sizePolicy.setVerticalPolicy(QSizePolicy::Policy::Fixed);
    sizePolicy.setHorizontalPolicy(QSizePolicy::Policy::Fixed);
 
    d->setSizePolicy(sizePolicy);
 
    d->setGeometry(100, 100, 800, 600);
 
    QScrollArea *scrollArea = new QScrollArea(w);
 
    QVBoxLayout *mainLayout = new QVBoxLayout();
    mainLayout->addWidget(scrollArea);
    QWidget *workSpace = new QWidget(scrollArea);
 
    QFont font;
    font.setPointSize(10);
 
    workSpace->setContentsMargins(QMargins(10, 10, 10, 10));
 
    QFontMetrics metrix(font);
 
    int x = 10, y = 10;
 
    // Теперь запросим все нужные поля для данного диалога
    dbaseQuery->exec("SELECT a.FieldText, a.FieldType, a.FieldName FROM"
                     " TableDescription a WHERE a.TableName='" + tabName + "';");
 
    while( dbaseQuery->next() )
    {
        // Создадим поле
        // с именем - именем колонки,
        // и поместим его на форму
 
        // Сначала создадим надпись
        QLabel *label = new QLabel(workSpace);
        label->setFont(font);
        label->setText(dbaseQuery->value(0).toString());
        label->setGeometry(x, y, metrix.width(label->text()), metrix.height());
        y += metrix.height() + 10;
    }
 
    scrollArea->setWidget(workSpace);
    scrollArea->setWidgetResizable(true);
    scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
 
    w->setLayout(mainLayout);
    w->setVisible(true);
    return d;
}
Тут я создаю форму и наполняю ее лэйблами.
Мудохаюсь с этим сколл эрием уже часа 4.
Сначала делал все по людски, создавал QVBoxLayout и с помощью addWiget клал туда лэйбл.
Но как я ни старался, они наползали друг на друга, не обращаю внимания на область прокручивания.
Сейчас - сделал, как говорится, в лоб. В итоге часть элементов, которая помещается на экран - видна, остальные - где то внизу. Полоса прокручивания - не активна(((
Перепробовал уже все. Не знаю что и делать =(
derElektroBesen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск