© 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);
}


Для Django рекомендую VDS-хостинг TIMEWEB

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
24 сентября 2018 г. 17:42
edorofeeva

C++ - Тест 001. Первая программа и типы данных

  • Результат 100баллов,
  • Очки рейтинга10
24 сентября 2018 г. 17:37
edorofeeva

C++ - Тест 001. Первая программа и типы данных

  • Результат 66баллов,
  • Очки рейтинга-1
23 сентября 2018 г. 14:38
No Names

C++ - Тест 001. Первая программа и типы данных

  • Результат 60баллов,
  • Очки рейтинга-1
Последние комментарии
24 сентября 2018 г. 15:09
Евгений Легоцкой

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

А вот здесь у меня есть пример использования supervisor. https://evileg.com/ru/post/3/ Вся статья вам там не интересна, интересен только шаг с настройкой supervisor. Он получается ...
24 сентября 2018 г. 15:00
avovana

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Не могли бы дать ссылку на пример? Какое-то рабочее использование. Т.е. у меня есть Qt Gui App, которое я бы хотел запускать при старте системы и в случае, если оно грохнется. Если о чем Вы го...
24 сентября 2018 г. 14:55
Евгений Легоцкой

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Если честно, то я не уверен, что это вообще можно реализовать через *.desktop файл. Я сделал предположение на основе того, что вы сказали про *.desktop и рестарт. Все варианты, котор...
24 сентября 2018 г. 14:47
avovana

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Просто сейчас правлю сам файл example.desktop. Пытаюсь понять какую пару key=value мне нужно дописать.
24 сентября 2018 г. 14:42
Евгений Легоцкой

Qt Linux - Урок 001. Автозапуск Qt приложения под Linux

Ну я имел ввиду, что дописать в коде вот сюда то, о чём вы говорили про рестарт QString autorunContent("[Desktop Entry]\n" "Type=Application\n" ...
Сейчас обсуждают на форуме
24 сентября 2018 г. 16:47
Евгений_Канусовский@1981

Чтение файлов в python

Добрый вечер Евгений и форумчане! Столкнулся с проблемой чтения файлов в python: файлы с обычным текстом в формате las и txt читаются, например: ~Version information VERS.          ...
24 сентября 2018 г. 13:29
Евгений Легоцкой

Трансляция видео с помощью VLC по RTP

Добрый день! Я не сталкивался, но предположу, что нужно настроить Input Codec в VLC. В настройках есть секция Input Codec, возможно, что там установлено низкое разрешение. ...
21 сентября 2018 г. 8:25
Евгений Легоцкой

Прокси-модель, содержащая на 1 столбец больше, чем модель-источник.

Попробуйте ещё PySide 2 - это официально поддерживаемый пакет привязок Python к Qt, возможно, что там не будет таких проблем.
20 сентября 2018 г. 20:06
Евгений Легоцкой

Qt Installer Framework

Добрый день. Зачем собирать Qt Installer Framework-то из исходников? Я ещё понимаю Qt собирают из исходников статически (хотя тоже считаю по большей части бесполезной тратой времени),...
Присоединяйтесь к нам в социальных сетях