Это определенно должно быть возможно.
Во-первых, вы должны знать, что до того, как на самом деле отображается окно, у него нет информации о его размере - поэтому размер, вероятно, вернет 0 (или недействителен или что-нибудь;)) в этот момент - это, вероятно, испортит весь размер и поэтому молча отвергается. Я бы попробовал
Form *w = new Form();
//w->ensurePolished();
w->setFixedSize(w->sizeHint());
w->show();
Размер подсказки должен иметь правильное значение независимо от того, что. QWidget::ensurePolished() может понадобиться здесь, но я рекомендую сначала попробовать без него - если это сработает, зачем усложнять вещи?
Если он все еще не работает, то вы можете просто попробовать перекрывая resizeEvent()
и установка единственно правильный размер для виджета, если пользователь изменяет его на что-нибудь еще. Это все равно даст пользователю иллюзию способности изменять размер (курсоры меняются по краям и т. Д.), Поэтому это действительно последний вариант.
EDIT:
#include <QtGui/QApplication>
#include <QWidget>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
w.setFixedSize(500,500);
w.show();
return a.exec();
}
Результат: виджет не может быть изменен. Таким образом, это не изменение в QMainWindow, которое помогло - по крайней мере, в моей системе простой виджет тоже может это сделать;)
Это действительно странно, что вы пробовали работать. Если вы работаете в Windows, попробуйте с помощью 'w-> setWindowFlags (Qt :: MSWindowsFixedSizeDialogHint)' –
@NemanjaBoric К сожалению, это тоже не работает. Может быть, потому, что я использую форму здесь. Вместо этого я должен использовать диалог. Я не думаю, что формы могут быть отключены при изменении размера – Rajeshwar