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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Виджеты в ToolBare  (Прочитано 3593 раз)
Sancho_s_rancho
Гость
« : Июнь 30, 2010, 11:08 »

Есть такой замечательный контрол/виджет как spinbox. Мне же захотелось той же функциональности, но с другим внешним видом: слева полноценная toolbutton, по центру поле ввода  и слева еще один toolbutton.  
Сделал что-то типа:

Код:
intValidator = new QIntValidator(this);
    less = new QToolButton();
    less->setAutoRaise(true);
    more = new QToolButton();
    more->setAutoRaise(true);
    lineEdit = new QLineEdit();
    lineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
    lineEdit->setFixedWidth(lineEdit->sizeHint().height()*2);
    lineEdit->setValidator(intValidator);
    setLineEditContent(initialContent);
    lineEdit->setAlignment(Qt::AlignHCenter);
    layout = new QHBoxLayout();
    layout->setSpacing(0);
    layout->setContentsMargins(0,0,0,0);
    layout->addWidget(less);
    layout->addWidget(lineEdit);
    layout->addWidget(more);
Поместил на toolbar и оказалось, что кнопки less и more меньше, чем соседние QActionы. При этом QLineEdit вполне себе занимает по высоте допустимый размер. С гигантским QLineEdit все решаемо, а вот buttonы почему такие маленькие.
(см. скриншот)
Записан
NicK
Гость
« Ответ #1 : Июль 01, 2010, 15:12 »

а если вручную устанавливать минимальные/максимальные размеры QToolButton'ов равным ширине QLineEdit?
Записан
Sancho_s_rancho
Гость
« Ответ #2 : Июль 01, 2010, 15:18 »

а если вручную устанавливать минимальные/максимальные размеры QToolButton'ов равным ширине QLineEdit?
Такие фокусы (прописывание ручками исходя из каких-то  других размеров) у меня припасены на крайний случай.
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Июль 01, 2010, 15:42 »

Цитировать
Сделал что-то типа:
Ваше "что-то типа" уж очень кастрированное.
Выкладывайте рабочий кусок кода.
« Последнее редактирование: Июль 01, 2010, 15:51 от GreatSnake » Записан

Qt 5.11/4.8.7 (X11/Win)
Sancho_s_rancho
Гость
« Ответ #4 : Июль 01, 2010, 18:33 »

Цитировать
Сделал что-то типа:
Ваше "что-то типа" уж очень кастрированное.
Выкладывайте рабочий кусок кода.
Ну вообще-то это и есть кусок кода. Но если желаете видеть скобочки, то могу так:
Код:
IntEdit::IntEdit(int initialContent, QWidget *parent) :
        QWidget(parent)
{
    intValidator = new QIntValidator(this);
    less = new QToolButton();
    less->setAutoRaise(true);
    more = new QToolButton();
    more->setAutoRaise(true);
    lineEdit = new QLineEdit();
    lineEdit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred));
    lineEdit->setFixedWidth(lineEdit->sizeHint().height()*2);
    lineEdit->setValidator(intValidator);
    setLineEditContent(initialContent);
    lineEdit->setAlignment(Qt::AlignHCenter);
    layout = new QHBoxLayout();
    layout->setSpacing(0);
    layout->setContentsMargins(0,0,0,0);
    layout->addWidget(less);
    layout->addWidget(lineEdit);
    layout->addWidget(more);
    setLayout(layout);
    setConnections();
}
И далее для toolbarа главного окна я делаю addWidget(тут_объект_IntEdit). Никакой магии Улыбающийся
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #5 : Июль 01, 2010, 19:16 »

Установите для Ваших QToolButton QSizePolicy::Preferred по вертикали.
Должно помочь. 
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
Sancho_s_rancho
Гость
« Ответ #6 : Июль 01, 2010, 20:15 »

Установите для Ваших QToolButton QSizePolicy::Preferred по вертикали.
Должно помочь.  
Не помогло. Может потому что там векторные иконки?
Но помогло следующее:
Цитировать
The button's look and dimension is adjustable with setToolButtonStyle() and setIconSize(). When used inside a QToolBar in a QMainWindow, the button automatically adjusts to QMainWindow's settings (see QMainWindow::setToolButtonStyle() and QMainWindow::setIconSize()). Instead of an icon, a tool button can also display an arrow symbol, specified with arrowType.
Соответсвенно:
Код:
QMainWindow *mw = qobject_cast<QMainWindow*>(parent);
    if (mw)
    {
        less->setIconSize(mw->iconSize());
    }
Если приведение к классу QMainWindow успешно, то наследуем его размер иконок.  Поскольку я помещал не тулбаттоны, а виджет, содержащий тулбаттоны, то автоматом настройки главного окна не брались.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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