2013-05-02 3 views
0

Я хочу отключить изменение размера моей формы - вот что я пробовал. я изменил политику изменения размера формы к следующему HorizontalPolicy: Фиксированный VerticalPloicy: ФиксированныйОтменить изменение размера формы

Я также попытался следующие

Form *w = new Form(); 
w->setFixedSize(w->size()); 
w->show(); 

Но форма до сих пор получает изменен путем перетаскивания углы. Какие-либо предложения ?

+0

Это действительно странно, что вы пробовали работать. Если вы работаете в Windows, попробуйте с помощью 'w-> setWindowFlags (Qt :: MSWindowsFixedSizeDialogHint)' –

+0

@NemanjaBoric К сожалению, это тоже не работает. Может быть, потому, что я использую форму здесь. Вместо этого я должен использовать диалог. Я не думаю, что формы могут быть отключены при изменении размера – Rajeshwar

ответ

1

Это определенно должно быть возможно.

Во-первых, вы должны знать, что до того, как на самом деле отображается окно, у него нет информации о его размере - поэтому размер, вероятно, вернет 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, которое помогло - по крайней мере, в моей системе простой виджет тоже может это сделать;)

+0

Это все еще не работает – Rajeshwar

+0

Просто, чтобы быть уверенным, что я только что создал новый проект, с новым стандартным QMainWindow, удалил строку состояния (с отдельной ручкой изменения размера) и ** после ** 'setupUi()' Я добавил 'setFixedSize (sizeHint());' - и мои окна не имеют размера - даже не показывая размер курсора при падении границ. Моя система WIndows 7, Qt 4.7.4 (32 бит). –

+0

Ну, я использую плагин QT для VS2010. Создал новый класс пользовательского интерфейса, полученный из базового класса QWidget. Добавьте его главное окно, полученное из 'QMainWindow'. Мой класс ui наследует от 'QWidget' – Rajeshwar

Смежные вопросы