Например, есть QMainWindow
, где находится форма входа (логин, пароль). При нажатии открывается еще один QMainWindow
, уже сама программа, а старое окно закрывается при вводе данных.
Правильно ли такое соотношение? В этом случае, мне не нравится то, что когда окно закрывается, второе окно отображается в другом месте, и размеры окна тоже меняются (или же уходит с полноэкранного режима).
Или лучше сделать так: одно окно QMainWindow
, на котором будет панель с логином; при вводе верных данных скрыть его и открыть другую панель, где сама суть проги.
Посоветуйте, как правильно поступить. В Qt я новичок.
На мой взгляд, тащить QMainWindow ради формы с логином и паролем это чересчур.
Первый вариант: если вам при загрузке программы уже надо иметь QMainWindow на весь экран, то проще отнаследоваться от QWidget, реализовать поля ввода и их логику. Разместить его в QMainWindow.
Второй вариант: если QMainWindow пока не нужен, а нужна просто форма с полями ввода, то отнаследуйтесь от QDialog. Запускайте его.
При готовности, передавайте введённые данные дальше в обработчик. Если данные корректны, то (первый вариант) удаляете QWidget и размещаете новый centralWidget на QMainWindow со всем вашим интерфейсом или (второй вариант) закрываете QDialog и создаёте QMainWindow.
В любом случае, если основное окно долго создавать, то его можно сделать сразу при загрузке программы, а после ввода данные просто вставлять в layout.
Если вообще ничего неохота удалять, закрывать и тд, то QStackedWidget без возможности пользовательского переключения. На одной вкладке будет ваша форма, на другой всё остальное. Меняете программно.
Все оказалось действительно просто, решил оставить 1 вариант и использовать следующее:
this->setGeometry(parent->geometry());
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
У меня в объекте класса хранится инициализированный массивТеперь нужно в отдельной функции сделать манипуляции с этим массивом, но мне его...
Нужно найти все натуральные числа, не делящиеся ни на один из квадратов простых чисел и не превышающие число N (1 <= N <= 10^9)
Добрый день! Создаю стандартные оси OX, OYВсе замечательно, но нулевая точка обозначается по каждой из осей, причем текст пересекается самой...