Поиск:

Ответ в темуСоздание новой темы Создание опроса
> QGridLayout, Задание размеров размещаемых виджетов 
V
    Опции темы
plica98
Дата 1.10.2013, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Добрый день, уважаемые Коллеги.

Возникла проблема с заданием размеров размещаемых виджетов.
Никак не получается задать разную ширину для виджетов lwg1, lwg2  и twg (см. ниже фрагмент текста)
Хочу чтобы ширина lwg1,lwg2 была в два раза меньше ширины twg.

Может я что-то ни так делаю ? 
За ранее благодарю за помощь.


Код

MainWindow::MainWindow()
{

    ................................


    QGridLayout *pgl = new QGridLayout();

    QStringList lst;
    twg = new QTreeWidget;
    twg->setContextMenuPolicy(Qt::CustomContextMenu);
    twg->setColumnCount(2);
    twg->setColumnWidth(0,120);

    lst << "Name1" << "Name2";
    twg->setHeaderLabels(lst);


    lst1 = new QLabel("Заголовок1");
    lst2 = new QLabel("Заголовок2");

    lwg1 = new QListWidget;
    lwg1->setContextMenuPolicy(Qt::CustomContextMenu);

    lwg2 = new QListWidget;
    lwg2->setContextMenuPolicy(Qt::CustomContextMenu);


    pgl->addWidget(twg,0,0,50,30);     // задание размеров ширина = 30
    pgl->addWidget(lst1,0,30,1,20);
    pgl->addWidget(lst2,0,50,1,20);
    pgl->addWidget(lwg1,1,30,49,20);  // задание размеров ширина = 20
    pgl->addWidget(lwg2,1,50,49,20);  // задание размеров ширина = 20

    QWidget *win = new QWidget;
    win->setLayout(pgl);
    setCentralWidget(win);

}




С уважением plica98.

PM MAIL   Вверх
math64
Дата 2.10.2013, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



При добавлении виджетов в QGridLayout задаются не координаты, а номера строк и колонок (аналог в html - colspan и rowspan). У тебя большинство колонок и строк будут иметь нулевую ширину и высоту.
Используй 
Код
void QGridLayout::setColumnMinimumWidth ( int column, int minSize ); 
 для задания минимальной ширины колонок и 
Код
void QGridLayout::setColumnStretch ( int column, int stretch )
 для задания растяжения колонки. Для колонки дерева задай растяжение 2, для списков - 1.
Также можно использовать QSpacerItem.
PM   Вверх
plica98
Дата 2.10.2013, 08:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



math64, спасибо.

Попробую.
PM MAIL   Вверх
plica98
Дата 2.10.2013, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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




    pgl->addWidget(twg,0,0,50,30);     // задание размеров ширина = 30 колонок

Я так понимаю, что виджет дерева twg размещается в строке 0, колонке 0 и занимает 50 строк и 30 колонок.

    pgl->addWidget(lwg1,1,30,49,20);  // задание размеров ширина = 20 колонок

виджет списка lwg1 размещаются в строке 1, колонке 30 и занимает 49 строк и 20 колонок.


    pgl->addWidget(lwg2,1,50,49,20);  // задание размеров ширина = 20 колонок

виджет списка lwg2 размещаются в строке 1, колонке 50 и занимает 49 строк и 20 колонок.


или что-то я не так понимаю ?
PM MAIL   Вверх
math64
Дата 3.10.2013, 07:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Создай виджет с формой и отредактируй всё что тебе нужно в дизайнере.
Посмотри сгенерированный код в ui_mainwindow.h
Код (после упрощения) будет примерно такой:
Код

    // twg расположен в колонке 0, минимальная ширина колонки - 30, растяжение - 3
    // занимает две строки 0 и 1.
    // высота строки 0 определяется высотой меток
    pgl->addWidget(twg,0,0,1,2);
    pgl->setColumnMinimumWidth (0, 30);
    pgl->setColumnStretch (0, 3);
    // Метки в строке 1 колонки 1 и 2 соответственно, ширина колонок - 20, растяжение - 2
    pgl->addWidget(lst1,1,0,1,1);
    pgl->setColumnMinimumWidth (1, 20);
    pgl->setColumnStretch (1, 2);
    pgl->addWidget(lst2,2,0,1,1);
    pgl->setColumnMinimumWidth (2, 20);
    pgl->setColumnStretch (2, 2);
    // Списки в строке 1
    pgl->addWidget(lwg1,1,1,1,1);
    pgl->addWidget(lwg2,2,1,1,1);



Это сообщение отредактировал(а) math64 - 3.10.2013, 07:34
PM   Вверх
plica98
Дата 4.10.2013, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



math64, спасибо.

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

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

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


 




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


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

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