crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

ruzik
  опции профиля:
сообщение 26.4.2011, 16:12
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Здравствуйте, у меня есть тулбар, а в нем кнопки и тп, не подскажите как можно изменить координаты(в частности х) какого-либо из этих виджетов,
setGeomentry не работает в тулбаре
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
3 страниц V   1 2 3 >  
Начать новую тему
Ответов (1 - 27)
wiz29
  опции профиля:
сообщение 26.4.2011, 16:43
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


на тулбар как элементы добавляются, можно код увидеть?

если ты добавляешь просто виджеты то попробуй QWidget::move метод
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 26.4.2011, 16:57
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


move не работает, он так же как и setGeometry в тулбаре не работает
а вижеты я добавляю mainToolBar->addWidget(* widget);
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 26.4.2011, 17:22
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Виджеты добавленные таким способом попадают автоматически в layout тулбара, наверняка, поэтому и не работают методы по редактированию геометрии из-за этого. А зачем перемещать элементы внутри тулбара?

как вариант можно сделать следующее:
1. Создать виджет с нужными тебе элементами.
2. Добавить этот виджет (с элементами) на тулбар.
3. перемещать элементы внутри созданного виджета будет возможно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 26.4.2011, 17:49
Сообщение #5


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


А можно ли как-то убрать слой и выстраивать элементы в ToolBare самому
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 27.4.2011, 8:29
Сообщение #6


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


в стандартном тулбаре нельзя.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 27.4.2011, 12:09
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


возможно просто вставить spacer'ы нужного размера,чтобы раздвинуть виджеты как вам надо?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 27.4.2011, 18:07
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ruzik @ 26.4.2011, 20:49) Link
А можно ли как-то убрать слой и выстраивать элементы в ToolBare самому
какой слой? ты имеешь в виду компоновщик?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 1.5.2011, 11:20
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


да
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 1.5.2011, 12:11
Сообщение #10


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Цитата(ernie @ 27.4.2011, 13:09) Link
возможно просто вставить spacer'ы нужного размера,чтобы раздвинуть виджеты как вам надо?

Вполне возможно что может помочь, не подскажите как называется заголовочный файл spacera, а то ни QSpacer ни Spacer не подходит, а так класс Spacer не находит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 1.5.2011, 12:57
Сообщение #11


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Нашел класс 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
  опции профиля:
сообщение 1.5.2011, 13:46
Сообщение #12


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ruzik @ 1.5.2011, 15:57) Link
через слой
слово Layout ни когда не переводится как Слой
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 1.5.2011, 14:35
Сообщение #13


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Как я понимаю остается 1 вариант - делать отдельным виджетом?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 1.5.2011, 20:20
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Создал нужный виджет, при компиляции никаких ошибок не выдает, но не отображается в тулбаре
+
В классе объявляю
prevnextWidget * prevNextButtons;

ну и в конструкторе
    prevNextButtons = new prevnextWidget;
    mainToolBar->addWidget(prevNextButtons);

Где mainToolBar объект класса QToolBar

Сообщение отредактировал ruzik - 1.5.2011, 20:20
Прикрепленные файлы
Прикрепленный файл  prevnextWidget.zip ( 1.46 килобайт ) Кол-во скачиваний: 103
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.5.2011, 20:53
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


ruzik, положи кнопки в компоновщик, задай ему поля.

П.С.
В дизайнере, для каждой кнопки установи maximumSize равный нужному тебе.
выдели виджет prevNext, нажми на панели инструментов "горизонтальную компоновку"
В дереве объектов ещё раз выдели prevNext, прокрути свойства в самый конец, в разделе "Компоновка" (Layout) установи все поля и шаг в нуль.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ernie
  опции профиля:
сообщение 2.5.2011, 6:24
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 13.5.2010
Из: Irkutsk
Пользователь №: 1712

Спасибо сказали: 11 раз(а)




Репутация:   1  


ruzik , со спэйсерами работаете так:
1.создаёте SpacerItem
2.устанавливаете ему размеры.
3.в лайауте делаете addItem
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 2.5.2011, 14:19
Сообщение #17


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Ни один из способов у меня не работает, видно руки очень кривые(у меня)
Если виджетом, то в дизайнере соединил в один слой, поставил нужные максимальные размеры поставил расстояние между ними равное 0, и все отступы тоже равные 0, компилирую - опять ничего не отображается
Если со spacerами, то пишу
    QSpacerItem * sp = new QSpacerItem(100,100);
    mainToolBar->layout()->addItem(sp);

По-смыслу, тк я вставляю spacer два виджета между которыми я его вставил должны как бы разлетаться, чего не происходит, все компилируется нормально, но ноль реакции
Если честно, то у меня почему-то и это не работает
mainToolBar->layout()->setSpacing(100);
опять же ноль реакции
P.S. использую QSS на класс QToolBar и вообще на все классы в нужном тулбаре, может проблемы из-за этого

Сообщение отредактировал ruzik - 2.5.2011, 20:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 2.5.2011, 20:07
Сообщение #18


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Вот как выглядит теперь виджет в дизайнере

Прикрепленные файлы
Прикрепленный файл  prevnextWidget.zip ( 544 байт ) Кол-во скачиваний: 181
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 10:17
Сообщение #19


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Была еще такая идея:
Можно установить отступ между элементами как 0 а где нужно вставлять spacer нужной ширины, но к сожалению при компиляции не выскакивает никаких ошибок, но ничего не меняется - ноль реакции
QSpacerItem * sp = new QSpacerItem(100,100);
mainToolBar->layout()->addItem(sp);
mainToolBar->layout()->setSpacing(20);
Не подскажите что может быть не так?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.5.2011, 10:22
Сообщение #20


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


я делаю так:
m_pToolBar = new QToolBar(0);
QWidget* pToolBarWidget(new QWidget);
m_toolBar.setupUi(pToolBarWidget);
QAction* pAction;
pAction = m_pToolBar->addWidget(pToolBarWidget);
pAction->setVisible(true);


сам виджет делаешь в QtDesigner вместе с компоновщиками и spacer'ами и не паришься:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 11:17
Сообщение #21


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Не могли бы вы выложить пример, а то вот что у меня получилось
prevNextButtons = new prevnextWidget;
    mainToolBar->setupUi(prevNextButtons);
    QAction* pAction;
    pAction = mainToolBar->addWidget(prevNextButtons);
    pAction->setVisible(true);

Где mainToolBar - главный тулбар, объявлен программно
prevNextWidget это и есть нужный виджет, он сделан в дизайнере Link
И пишет
Ошибка 1 error C2039: setupUi: не является членом "QToolBar" c:\Documents and Settings\rustam\Мои документы\Visual Studio 2008\Projects\RizekQssEditor\RizekQssEditor\rizekqsseditor.cpp 192
Извините за то что так много спрашиваю, просто я еще совсем зеленый в Qt, заранее огромное спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.5.2011, 11:24
Сообщение #22


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Цитата(ruzik @ 3.5.2011, 12:17) Link
Где mainToolBar - главный тулбар, объявлен программно


//это не реальный класс
class MyMainWindow : public QMainWindow
{
  private:
    Ui::ToolBarWidget m_toolBar;    
};
....................................................
QWidget* pToolBarWidget = new QWidget;
//m_toolBar - объект ui
//Ui::ToolBarWidget - это получаешь в дизайнере и создаешь объект в нужном классе.
m_toolBar.setupUi(pToolBarWidget);
QAction* pAction;
pAction = mainToolBar->addWidget(pToolBarWidget);
pAction->setVisible(true);

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 13:52
Сообщение #23


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Может я чего-то недопонимаю(не может а точно), но все наперекосяк, вот аналог того что я делаю, помогите пожалуйста

Прикрепленные файлы
Прикрепленный файл  ______.zip ( 2.99 килобайт ) Кол-во скачиваний: 111
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.5.2011, 14:40
Сообщение #24


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


Вот код, ты используешь наследование от UI классав, поэтому компилер выдавал ошибки, ну и не используешь компоновщики, поэтому на тулбаре бы ничего не смог увидеть, если бы даже все добавилось.

не забывай прикреплять файлы проекта к своим исходникам

Сообщение отредактировал wiz29 - 3.5.2011, 14:39
Прикрепленные файлы
Прикрепленный файл  example.zip ( 3.06 килобайт ) Кол-во скачиваний: 109
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 14:51
Сообщение #25


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Спасибо большое!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 16:52
Сообщение #26


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


Еще раз раз огромное спасибо за помощь и объясните пожалуйста по-конкретнее в чем отличие вашего файла формы от моего

Сообщение отредактировал ruzik - 3.5.2011, 16:58
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 3.5.2011, 17:03
Сообщение #27


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

Спасибо сказали: 94 раз(а)




Репутация:   12  


если ты внимательно посмотришь в QtDesigner на виджет prevnextWidget.ui, то в том проекте, который выложил я, имеется компоновщик для всего виджета, у тебя был компоновщик только для 2х кнопок, этого не достаточно. В моем примере компоновщик кнопок, встроен в компоновщик для всего виджета, разница только в этой неприятной мелочи:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ruzik
  опции профиля:
сообщение 3.5.2011, 17:52
Сообщение #28


Активный участник
***

Группа: Участник
Сообщений: 254
Регистрация: 23.2.2011
Из: Саратов
Пользователь №: 2436

Спасибо сказали: 2 раз(а)




Репутация:   0  


И еще раз огромное спасибо!
P.S. кстати можно и без QAction, то есть
prevNextButtons = new prevnextWidget;
mainToolBar->addWidget(prevNextButtons);

Сообщение отредактировал ruzik - 3.5.2011, 17:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.8.2025, 16:35