Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение размеров формы 
V
    Опции темы
kuvshinka
Дата 26.2.2010, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



А как программно можно поменять размеры (resize) непосредственно самой формы (ее ObjectName допустим равен MyForm)?
PM MAIL   Вверх
chaos
Дата 26.2.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



PM WWW   Вверх
kuvshinka
Дата 26.2.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



почему такой парадокс - у виджетов для изменения размеров используется метод geometry (и такое же свойство), а для изменения размеров непосредственно самой формы вроде тоже есть свойство geometry, но используестя метод resize?  
и у кого именно надо менять resize - у формы (Mainwindow) или у CentralWidget (он есть по умолчанию в новом gui-проекте)? свойства geometry у них одинаковые...в чем разница?

такой вариант на онклик кнопки:
Код

ui->centralWidget->resize(100,100);

вообще дает не пойми что...тоже самое и с исп-ем метода setGeometry...
надо все-таки не для CentralWidget, а для MainWindow применять resize - дайте примерчик пож-та....  
PM MAIL   Вверх
chaos
Дата 26.2.2010, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 5
Всего: 44



Цитата(kuvshinka @  26.2.2010,  18:00 Найти цитируемый пост)
дайте примерчик пож-та.... 

Код

this->resize(100, 100);

PM WWW   Вверх
SABROG
Дата 26.2.2010, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(kuvshinka @  26.2.2010,  21:00 Найти цитируемый пост)
Код

ui->centralWidget->resize(100,100);

Никогда так не делай. centralWidget это дочерний виджет QMainWindow. Грубо говоря этот виджет предназначен для пользовательского интерфейса в то время как другие области QMainWindow отводятся под toolbar, dockwidgets и statusbar. Например при редактировании формы в Designer'e область в самом центре (где твоя форма) это и есть centralWidget. Размер этого виджета зависит как от размеров всего главного окна так и от размеров и расположения доквиджетов (редактор свойств объекта, редактор сигналов и слотов, список компонентов и тому подобное). Поэтому работая с классом QMainWindow при добавлении своих виджетов надо использовать centralWidget в качестве родителя. Отличие QMainWindow от QWidget в том, что первый является комплексным виджетом с кучей предопределенных детей и функционалом, который обычно пытаются реализовать в стандартных программах, а QWidget всего-лишь примитив, он даже не имеет собственного метода отрисовки в paintEvent() и без дополнительного кода к нему даже Style Sheets не применимы.

Цитата(kuvshinka @  26.2.2010,  11:11 Найти цитируемый пост)
ObjectName допустим равен MyForm

Хотелось бы уточнить objectName имеет точно такое же название как и указатель на форму или задача сводится к тому, что об объекте мы ничего не знаем кроме его имени и прямого доступа к нему у нас нет?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 27.2.2010, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



а если мне нужно подстроить размеры формы под какой-то определенный размер? т.е. как программно можно узнать текущие размеры родительского виджета (например фрейма)?
PM MAIL   Вверх
SABROG
Дата 27.2.2010, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(kuvshinka @  27.2.2010,  00:32 Найти цитируемый пост)
т.е. как программно можно узнать текущие размеры родительского виджета (например фрейма)? 


frameSize(), frameGeometry(), size(), geometry(), rect(), width() x height()

Кому-то пора начать читать документацию...


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 27.2.2010, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



я читала литературу, да разве все найдешь....:
Код

   MyForm2 *exzem = new MyForm2(ui->frame);
    exzem->resize(ui->frame->width(),ui->frame->height());
 

почему-то работает неверно - таким образом хочу настроить размер формы  класса  MyForm2 под размер фрейма frame на главной форме...что тут не так? если параметры у resize задавать численно то вроде все верно меняется, а так - нет...width - это же ширина (фрейма), а height - его высота???
PM MAIL   Вверх
SABROG
Дата 27.2.2010, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Ты пытаешься сделать то, что давно делает QGridLayout.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 27.2.2010, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



В чем отличие свойств width(), height() от Ширина/Высота в свойстве geometry? Они явно не совпадают…. 
Код

lineEdit->setText(QString::number(frame->geometry().width(),10));

выдает верный ответ (то, что мне и надо)…но на форме, где расположен этот frame, есть еще горизонтальная компоновка и тогда frame->geometry().width() становится равным 100 (???)…Так как же можно определить размеры (ширина/высота) виджета (frame), если используется компоновка на форме, содержащей этот frame?


Это сообщение отредактировал(а) kuvshinka - 27.2.2010, 23:59
PM MAIL   Вверх
kuvshinka
Дата 28.2.2010, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



так все-таки - как можно узнать узнать размеры виджета при условии использования компоновки на форме с этим виджетом?
PM MAIL   Вверх
SABROG
Дата 28.2.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Зависит от того где и когда ты пытаешься это сделать.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
kuvshinka
Дата 1.3.2010, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



SABROG: например задача такая - см. архивчик...желательно узнать размеры виджета методом resize а не использованием дополнительной компоновки так как на этом виджете (frame2) еще будет выводистя другая информация... 

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Proj.rar 271,55 Kb
PM MAIL   Вверх
kuvshinka
Дата 2.3.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 27.4.2008

Репутация: нет
Всего: нет



SABROG: я программку кинула в форум (см. выше архив)...посмотрите пож-та....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.