Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [qt4] QWidget не хочет авторастягиваться 
V
    Опции темы
Goganchic
Дата 23.2.2010, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Создаю в Designer-е форму (см. аттач). После этого в элемент widget втыкаю еще один виджет такого класса:

Код

#ifndef GRAPHICS_H
#define GRAPHICS_H

#include <QWidget>

class Graphics : public QWidget
{
public:
    Graphics(QWidget *parent = 0);

protected:
    void paintEvent(QPaintEvent *event);
};

#endif // GRAPHICS_H

#include "graphics.h"
#include <QPainter>
#include <QDebug>
#include <QPaintEvent>

Graphics::Graphics(QWidget *parent)
        : QWidget(parent)
{
    this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
}

void Graphics::paintEvent(QPaintEvent *event)
{
    qDebug() << "paint event called";
    qDebug() << "width: " << this->width() << " height: " << this->height();
    QPainter painter;
    painter.begin(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.fillRect(event->rect(), QBrush(QColor(64, 32, 64)));
    painter.setPen(QColor(0, 0, 0));
    painter.drawEllipse(50, 50, 20, 20);
    painter.end();
}



"Втыкание" происходит таким кодом:

Код

Window::Window(QWidget *parent)
        : QDialog(parent)
{
    setupUi(this);
    generationTimeEdit->setValidator(new QIntValidator(1, 100000, this));
    processingTimeEdit->setValidator(new QIntValidator(1, 100000, this));
    dataCountEdit->setValidator(new QIntValidator(1, 100000, this));

    graphics = new Graphics(widget);
    graphics->show();
    qDebug() << "widget width: " << widget->width() << " widget height: " << widget->height();
}


При отрисовке программы на экране в консоль выводится сообщение о том, что размеры внешнего виджета 300х300 (т.к. я указал минимальные размеры, хотя виджет должен растягиваться, по идее), а внутреннего - виджета 100x30, т.е. он почему-то не растягивается. Подскажите пожалуйста, что я делаю не так?

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  emulatordialog.ui.zip 0,79 Kb
PM Jabber   Вверх
SABROG
Дата 23.2.2010, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Давай уточним, ты хочешь, чтобы внешний виджет сокращался до размеров дочернего виджета или чтобы дочерний виджет растягивался на всю область родителя (300x300)? Если второе, то читай тему Layout Management
Если первое, то надо смотреть в сторону метода QWidget::adjustSize()


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Goganchic
Дата 23.2.2010, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



SABROG, хочу второе, т.е. чтобы дочерний виджет растягивался на всю область родителя, и собственно, как и указано в прикрепленном файле - я так и делаю, т.е. выставляю expanding-и, делаю vbox layout, в общем, все как и положено, а оно - не хочет работать, берет минимальные размеры и все тут, вот хоть убейся :(
PM Jabber   Вверх
SABROG
Дата 23.2.2010, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Судя по единственному .ui файлу, который ты выложил, никакого QVBoxLayout на widget'e нет.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Goganchic
Дата 23.2.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



VBox - там лейаут корневого тикета, т.е. окна
PM Jabber   Вверх
SABROG
Дата 23.2.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


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

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



Это так не работает. Компановка распространяется только на детей, на внуков и правнуков нет. Берется только 1 уровень вложенности. Добавляй на widget еще один компановщик или используй вместо widget'a сразу Graphics.

Это сообщение отредактировал(а) SABROG - 23.2.2010, 12:37


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Goganchic
Дата 24.2.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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