© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
10 июля 2018 г. 21:06

Выравнивание в layout и sizePolicy

Товарищи, подскажите, пожалуйста: создаю на форме QHBoxLayout, добавляю в него виджеты с указанием выравнивания по центру, layout выставляет размер виджетов равным возвращаемому sizeHint и не реагирует на sizePolicy (пробовал разные варианты). Хочу добиться чтобы размер виджетов в layout изменялся вместе с изменением размера окна. resizeEvent переопределен чтобы виджет всегда был квадратным. Если Qt::AlignCenter не указывать, то всё работает как надо за исключением выравнивания виджетов по левому верхнему краю.


int main()
{ QHBoxLayout *l2 = new QHBoxLayout; QScatterPlot *ph1 = new QScatterPlot;
QScatterPlot *ph2 = new QScatterPlot;
QScatterPlot *ph3 = new QScatterPlot;
QScatterPlot *ph4 = new QScatterPlot;
l2->addWidget(ph1, 1, Qt::AlignCenter); l2->addWidget(ph2, 1, Qt::AlignCenter); l2->addWidget(ph3, 1, Qt::AlignCenter); l2->addWidget(ph4, 1, Qt::AlignCenter); }

QScatterPlot::QScatterPlot(QWidget *parent) : QCustomPlot(parent)
{

setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
}

void QScatterPlot::resizeEvent(QResizeEvent *event)
{
int s = qMin(event->size().width(), event->size().height());
QSize size(s, s);
resize(size);
QResizeEvent e(size, event->oldSize());
QCustomPlot::resizeEvent(&e);
event->accept();
}

QSize QScatterPlot::sizeHint() const
{
return QSize(200, 200);
}

Добрый день!

Если вы переопределяете sizeHint и возвращаете фиксированные размеры в нём, то виджет всегда должен считаться по размеру того размера, который вы возвращаете в sieHint, по идее виджеты тогда никогда не должны реагировать на resizeEvent, как должны были бы.
Думаю, что Вам нужно создать в классе QScatterPlot, объявленные в классе переменные, отвечающие за ширину и высоту, которые будете устанавливать при событии resizeEvent, и с их помощью будете возвращать sizeHint
QSize QScatterPlot::sizeHint() const
{
  return QSize(m_width, m_height);
}


Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
15 июля 2018 г. 20:20
igorpodoba

C++ - Тест 003. Условия и циклы

  • Результат 92баллов,
  • Очки рейтинга8
15 июля 2018 г. 20:17
igorpodoba

C++ - Тест 002. Константы

  • Результат 91баллов,
  • Очки рейтинга8
14 июля 2018 г. 7:47
igorpodoba

C++ - Тест 003. Условия и циклы

  • Результат 71баллов,
  • Очки рейтинга1
Последние комментарии
14 июля 2018 г. 18:49
Евгений Легоцкой

Qt/C++ - Урок 049. QTranslator - динамический перевод мультиязычного приложения на Qt

У меня на руках есть один проект, где какие-то потуги с переводами и подключением этого добра в CMAKE делались.Но там файл перевода добавляется прямо в ресурсы проекта. То есть бинарных qm файл...
14 июля 2018 г. 18:35
Евгений Легоцкой

Django - Урок 036. Как добавить аутентификацию через социальные сети. ВКонтакте

Не, не будет, в данной батарейке уже есть необходимый функционал по разрулированию этой проблемы. Аутентификации из разных социальных сетей будут сливаться на один аккаунт. Так что всё нормаль...
14 июля 2018 г. 4:17
Gerych

Django - Урок 036. Как добавить аутентификацию через социальные сети. ВКонтакте

Мне интересно что будет если в обеих сетях в авторизации одинаковый еmail. Не выведет ли ошибку ?
13 июля 2018 г. 11:55
Arrow

Qt/C++ - Урок 049. QTranslator - динамический перевод мультиязычного приложения на Qt

Хорошая статья. Только один вопрос как это сделать для CMake? Интересует именно запись в CMakeList TRANSLATIONS += QtLanguage_ru.ts CODECFORSRC = UTF-8 П...
Сейчас обсуждают на форуме
14 июля 2018 г. 18:56
Евгений Легоцкой

Как сделать пустое поле в QDateEdit

Слишком много возни, чтобы подробно объяснить, что нужно сделать.... тем более, что у вас ещё зависимость на базу данных... Для начала нужно наследоваться от QCalendarWidget, посколь...
12 июля 2018 г. 15:02
незнаток

Перенос значений таблицы в другую таблицу

void Opisanie::perevod(){ QString mil; int mf = ui->table1->rowCount(); for(int ik = 0; ik < mf; ik++) { QString tu = ui->table1->model()->data(ui...
12 июля 2018 г. 7:46
Евгений Легоцкой

OpenSSL на Windows10

Совсем забыл. Вот в этом посте есть ссылка на скачивание openssl библиотек для msvc-2015
11 июля 2018 г. 16:05
Ruslan Polupan

Наследование от QLineEdit

Из опыта разработки в нашей конторе (для программирование хобби я техподдержка): Если есть возможность переложить логику приложения на базу данных то это лутший вариант. Т.е. использовать по м...

Рекомендуемые страницы