2016-11-28 2 views
1

У меня есть QMainWindow с большим количеством графиков (я использую для этого QCustomPlot). В результате каждый график неизбежно довольно мал по размеру. Все графики на этой странице рисуются на 1-й странице QStackedWidget.Qt: как я могу заставить QWidget отображаться в нескольких местах на моем mainWindow?

Чтобы обеспечить более четкое представление для каждого графика (по одному), я хочу показать увеличенный вид графика, когда пользователь нажимает на него. Потенциальное решение состоит в том, чтобы иметь 2-ю страницу на QStackedWidget, в которой может отображаться больший график. Вопрос в том, как мне назначить выделенный график на 2-ю страницу QStackedWidget?

В качестве альтернативы, есть ли лучший способ увеличить конкретный QWidget так, чтобы он занимал главное окно от конца до конца?

Как я могу позволить 2-й странице QStackedWidget обновить содержимое непосредственно с выбранного графика?

Есть ли пример, который я мог видеть, чтобы понять, что я должен делать?

ответ

1

В дополнение к связанному вопросу, на данном этапе вы можете сосредоточиться на преждевременных микро-оптимизации. Меньший график будет отображаться на гораздо более низком разрешении, поэтому он не будет выглядеть слишком хорошо, если вы взорвете его.

Если это ваш собственный виджет с сложным рисунком, вы можете легко нарисовать карту pixmap, а затем нарисуйте большую pixmap на большой граф и уменьшите ее для небольшого графика. Но опять же, вы делаете много лишнего рисования для всех этих небольших графиков по нечетной вероятности, что они попадают в центральное положение. Вы можете оптимизировать это, но увеличит сложность.

Это все равно можно было бы сделать для QCustomPlot, но это будет не так просто, и я сомневаюсь, что попытка сделать это увидит достойные возвращения. Поэтому просто создайте дополнительный большой график, когда он вам нужен, и не беспокойтесь о производительности, прежде чем столкнуться с проблемами. Разница будет незначительной, так как графики не слишком сложны для рисования. Вы не будете обновлять один график от другого, вы просто будете использовать тот же набор данных в двух графиках.