![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
ruzik |
![]()
Сообщение
#1
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте, у меня есть тулбар, а в нем кнопки и тп, не подскажите как можно изменить координаты(в частности х) какого-либо из этих виджетов,
setGeomentry не работает в тулбаре |
|
|
![]() |
wiz29 |
![]()
Сообщение
#2
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
на тулбар как элементы добавляются, можно код увидеть?
если ты добавляешь просто виджеты то попробуй QWidget::move метод |
|
|
ruzik |
![]()
Сообщение
#3
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
move не работает, он так же как и setGeometry в тулбаре не работает
а вижеты я добавляю mainToolBar->addWidget(* widget); |
|
|
wiz29 |
![]()
Сообщение
#4
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Виджеты добавленные таким способом попадают автоматически в layout тулбара, наверняка, поэтому и не работают методы по редактированию геометрии из-за этого. А зачем перемещать элементы внутри тулбара?
как вариант можно сделать следующее: 1. Создать виджет с нужными тебе элементами. 2. Добавить этот виджет (с элементами) на тулбар. 3. перемещать элементы внутри созданного виджета будет возможно. |
|
|
ruzik |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
А можно ли как-то убрать слой и выстраивать элементы в ToolBare самому
|
|
|
wiz29 |
![]()
Сообщение
#6
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
в стандартном тулбаре нельзя.
|
|
|
ernie |
![]()
Сообщение
#7
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
возможно просто вставить spacer'ы нужного размера,чтобы раздвинуть виджеты как вам надо?
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(ruzik @ 26.4.2011, 20:49) Link А можно ли как-то убрать слой и выстраивать элементы в ToolBare самому какой слой? ты имеешь в виду компоновщик?
|
|
|
ruzik |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
да
|
|
|
ruzik |
![]()
Сообщение
#10
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(ernie @ 27.4.2011, 13:09) Link возможно просто вставить spacer'ы нужного размера,чтобы раздвинуть виджеты как вам надо? Вполне возможно что может помочь, не подскажите как называется заголовочный файл spacera, а то ни QSpacer ни Spacer не подходит, а так класс Spacer не находит |
|
|
ruzik |
![]()
Сообщение
#11
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Нашел класс QSpacerItem, вроде этот, в ассисте нет ни QSpacer ни Spacer, но даже если этот то как его засунуть в тулбар, пробовал и через слой тулбара и через сам тулбра(addWidget), addLayout и тп у этих виджетов вообще нет, а addWidget не работает, выдает ошибку
Ошибка 1 error C2664: QToolBar::addWidget: невозможно преобразовать параметр 1 из 'QSpacerItem *' в 'QWidget *' c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\RizekQssEditor\RizekQssEditor\rizekqsseditor.cpp 149 Сам spacer я создаю QSpacerItem * sp = new QSpacerItem(0,25); |
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(ruzik @ 1.5.2011, 15:57) Link через слой слово Layout ни когда не переводится как Слой
|
|
|
ruzik |
![]()
Сообщение
#13
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Как я понимаю остается 1 вариант - делать отдельным виджетом?
|
|
|
ruzik |
![]()
Сообщение
#14
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Создал нужный виджет, при компиляции никаких ошибок не выдает, но не отображается в тулбаре
+ В классе объявляю
ну и в конструкторе
Где mainToolBar объект класса QToolBar Сообщение отредактировал ruzik - 1.5.2011, 20:20
Прикрепленные файлы
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#15
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
ruzik, положи кнопки в компоновщик, задай ему поля.
П.С. В дизайнере, для каждой кнопки установи maximumSize равный нужному тебе. выдели виджет prevNext, нажми на панели инструментов "горизонтальную компоновку" В дереве объектов ещё раз выдели prevNext, прокрути свойства в самый конец, в разделе "Компоновка" (Layout) установи все поля и шаг в нуль. |
|
|
ernie |
![]()
Сообщение
#16
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 130 Регистрация: 13.5.2010 Из: Irkutsk Пользователь №: 1712 Спасибо сказали: 11 раз(а) Репутация: ![]() ![]() ![]() |
ruzik , со спэйсерами работаете так:
1.создаёте SpacerItem 2.устанавливаете ему размеры. 3.в лайауте делаете addItem |
|
|
ruzik |
![]()
Сообщение
#17
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Ни один из способов у меня не работает, видно руки очень кривые(у меня)
Если виджетом, то в дизайнере соединил в один слой, поставил нужные максимальные размеры поставил расстояние между ними равное 0, и все отступы тоже равные 0, компилирую - опять ничего не отображается Если со spacerами, то пишу По-смыслу, тк я вставляю spacer два виджета между которыми я его вставил должны как бы разлетаться, чего не происходит, все компилируется нормально, но ноль реакции Если честно, то у меня почему-то и это не работает mainToolBar->layout()->setSpacing(100); опять же ноль реакции P.S. использую QSS на класс QToolBar и вообще на все классы в нужном тулбаре, может проблемы из-за этого Сообщение отредактировал ruzik - 2.5.2011, 20:06 |
|
|
ruzik |
![]()
Сообщение
#18
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Вот как выглядит теперь виджет в дизайнере
Прикрепленные файлы
|
|
|
ruzik |
![]()
Сообщение
#19
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Была еще такая идея:
Можно установить отступ между элементами как 0 а где нужно вставлять spacer нужной ширины, но к сожалению при компиляции не выскакивает никаких ошибок, но ничего не меняется - ноль реакции QSpacerItem * sp = new QSpacerItem(100,100); mainToolBar->layout()->addItem(sp); mainToolBar->layout()->setSpacing(20); Не подскажите что может быть не так? |
|
|
wiz29 |
![]()
Сообщение
#20
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
я делаю так:
сам виджет делаешь в QtDesigner вместе с компоновщиками и spacer'ами и не паришься ![]() |
|
|
ruzik |
![]()
Сообщение
#21
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Не могли бы вы выложить пример, а то вот что у меня получилось
Где mainToolBar - главный тулбар, объявлен программно prevNextWidget это и есть нужный виджет, он сделан в дизайнере Link И пишет Ошибка 1 error C2039: setupUi: не является членом "QToolBar" c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\RizekQssEditor\RizekQssEditor\rizekqsseditor.cpp 192 Извините за то что так много спрашиваю, просто я еще совсем зеленый в Qt, заранее огромное спасибо! |
|
|
wiz29 |
![]()
Сообщение
#22
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Цитата(ruzik @ 3.5.2011, 12:17) Link Где mainToolBar - главный тулбар, объявлен программно
|
|
|
ruzik |
![]()
Сообщение
#23
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Может я чего-то недопонимаю(не может а точно), но все наперекосяк, вот аналог того что я делаю, помогите пожалуйста
Прикрепленные файлы
|
|
|
wiz29 |
![]()
Сообщение
#24
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
Вот код, ты используешь наследование от UI классав, поэтому компилер выдавал ошибки, ну и не используешь компоновщики, поэтому на тулбаре бы ничего не смог увидеть, если бы даже все добавилось.
не забывай прикреплять файлы проекта к своим исходникам Сообщение отредактировал wiz29 - 3.5.2011, 14:39
Прикрепленные файлы
|
|
|
ruzik |
![]()
Сообщение
#25
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо большое!!
|
|
|
ruzik |
![]()
Сообщение
#26
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
Еще раз раз огромное спасибо за помощь и объясните пожалуйста по-конкретнее в чем отличие вашего файла формы от моего
Сообщение отредактировал ruzik - 3.5.2011, 16:58 |
|
|
wiz29 |
![]()
Сообщение
#27
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: ![]() ![]() ![]() |
если ты внимательно посмотришь в QtDesigner на виджет prevnextWidget.ui, то в том проекте, который выложил я, имеется компоновщик для всего виджета, у тебя был компоновщик только для 2х кнопок, этого не достаточно. В моем примере компоновщик кнопок, встроен в компоновщик для всего виджета, разница только в этой неприятной мелочи
![]() |
|
|
ruzik |
![]()
Сообщение
#28
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 254 Регистрация: 23.2.2011 Из: Саратов Пользователь №: 2436 Спасибо сказали: 2 раз(а) Репутация: ![]() ![]() ![]() |
И еще раз огромное спасибо!
P.S. кстати можно и без QAction, то есть prevNextButtons = new prevnextWidget; mainToolBar->addWidget(prevNextButtons); Сообщение отредактировал ruzik - 3.5.2011, 17:54 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 15.8.2025, 16:35 |