Russian Qt Forum
Ноябрь 25, 2024, 08:37 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Неизменяемые границы окна  (Прочитано 7427 раз)
Tmin10
Гость
« : Сентябрь 01, 2012, 16:18 »

Захотелось мне сделать неизменяемые границы окна, которые подстраиватся автоматичеки, для этого написал код:
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->mygroupBox->hide();
    layout()->setSizeConstraint(QLayout::SetFixedSize);
}
Но к сожалению, при запуске приложения не видно ни его окна, ни значка приложения. Если константы размера поставить другие окно будет, оно будет таким же, как и без этой строчки. Что можно сделать, чтобы исправить это?
« Последнее редактирование: Сентябрь 01, 2012, 16:57 от Tmin10 » Записан
maint
Гость
« Ответ #1 : Сентябрь 01, 2012, 16:43 »

вообще не понятно чего хочется. Но попробую догадаться. Есть функции     setMinimumSize и setMaximumSize. С их помощью можно задать неизменяемый размер. А фактический размер экрана, от которого нужно плясать можно вычислить
Код:
    QDesktopWidget *d = QApplication::desktop();
    w = d->width();     // returns desktop width
    h = d->height();     // returns desktop height
вообще формулируцте вопрос чнтко. Может пока формулируете и ответ сам придет Подмигивающий
Записан
Tmin10
Гость
« Ответ #2 : Сентябрь 01, 2012, 16:56 »

Что я хотел сделать:
Есть окно, нижнюю часть (mygroupBox) я скрываю в конструкторе и дальше я хочу, чтобы оставшееся окно нельзя было развернуть на весь экран, а размер окна подгонялся под текущие видимые виджеты автоматически. Делал по книжке Бланшет, Саммерфилд - QT4 Программирование GUI на С++.2ed, там в примере было показано как так сделать, для этого использовалось layout()->setSizeConstraint(QLayout::SetFixedSize);, что в моём случае приводит лишь к тому, что при запуске окна приложения вообще не видно.
Записан
Bepec
Гость
« Ответ #3 : Сентябрь 01, 2012, 17:08 »

Если вы написали это в конструкторе, то у поля будут значения 0,0. Точечка Улыбающийся

Соответственно это надо применять уже после конструктора )
Записан
Tmin10
Гость
« Ответ #4 : Сентябрь 01, 2012, 17:36 »

Меня смущает, что точно такой же код в примере из книги даёт нужный результат, а у меня нет...
А почему получается 0х0, если у меня остаются видимы 2 виджета?
Записан
Bepec
Гость
« Ответ #5 : Сентябрь 01, 2012, 17:52 »

Они у тебя видимыми становятся после того как отработает конструктор, ннэ?
Записан
Tmin10
Гость
« Ответ #6 : Сентябрь 01, 2012, 18:09 »

Вот пример из книги по которому я делаю, там же изменение размера тоже выполняется в конструкторе, однако прога работает корректно. (Бинарник собран под убунтой)
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #7 : Сентябрь 01, 2012, 18:34 »

думаю весь секрет в vertical spacer'е (см. файл sortdialog.ui)
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Примерный ученик
Бывалый
*****
Offline Offline

Сообщений: 450


И это не всегда помогает


Просмотр профиля
« Ответ #8 : Сентябрь 07, 2012, 11:03 »

Надо сделать минимальное и максимальное значение по одному из измерений отличными на 1 пиксел.
Тогда все работает. Почему то, если минимальные и максимальные размеры окна совпадают, окно становится недоступным и ни на какие сигналы не реагирует. Непонимающий
Записан

Как мало времени и как много нужно узнать
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #9 : Сентябрь 07, 2012, 12:41 »

Захотелось мне сделать неизменяемые границы окна, которые подстраиватся автоматичеки, для этого написал код:
Код:
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    layout()->setSizeConstraint(QLayout::SetFixedSize);
}
Но к сожалению, при запуске приложения не видно ни его окна, ни значка приложения. Если константы размера поставить другие окно будет, оно будет таким же, как и без этой строчки. Что можно сделать, чтобы исправить это?

Для QMainWindow такое не прокатывает. Используй QWidget.
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 23.