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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSplitter vs dock  (Прочитано 4983 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« : Ноябрь 11, 2009, 12:31 »

Нужно сделать 3 виджета, отделенных друг от друга черной полоской. Сплиттер отказывается ставить ширину хэндла в 0 (сбрасывает на дефолт).
Склоняюсь сделать через док виджеты. Ведь в qtCreator'e именно они?
Записан
break
Гипер активный житель
*****
Offline Offline

Сообщений: 846


Просмотр профиля
« Ответ #1 : Ноябрь 11, 2009, 12:55 »

если вам не нужно чтобы виджеты ездили - просто разместите их на QFrame и выставите параметры рамки - для боковых - убрать рамку, для центрально шириной 1 пиксель
Записан
crossly
Гость
« Ответ #2 : Ноябрь 11, 2009, 12:55 »

они.... но по ходу с наложенным stylesheet....
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Ноябрь 11, 2009, 12:59 »

break
мне наоборот надо чтоб ездили) в том-то и загвоздка. Но вез видимого сплиттера (т.е. черная полоска толщиной в 1 пиксель - фактически сама рамка виджета).

crossly
Там не только в стайлшите дало, там же еще кастомные виджеты в заголовок дока встроены
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Ноябрь 11, 2009, 13:20 »

Может как-то попроще, ну например унаследоваться от QSplitter и сделать ему пустой paint
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Ноябрь 11, 2009, 13:37 »

не совсем, но спасибо за мысль.
Моя задача в общем-то состояла в убирании отрисовки хэндлера (ибо он размером в 1 пиксель не смотрится)Решение:
Код:
class mySplitter : public QSplitter
{
public:
    mySplitter(Qt::Orientation o, QWidget * parent = 0) : QSplitter(o, parent) {}
    void paintEvent ( QPaintEvent * event ) {}
    QSplitterHandle *createHandle();
};

class SplitterHandle : public QSplitterHandle
{
public:
    SplitterHandle(Qt::Orientation o, QSplitter * parent = 0) : QSplitterHandle(o, parent) {}
//    QSize sizeHint () const {  return QSize(0, 0); }
    void paintEvent ( QPaintEvent * event ) {}
};

QSplitterHandle *mySplitter::createHandle()
{
    return new SplitterHandle(orientation(), this);
}
Сделать ширину 0 нельзя, тк за него нельзя будет таскать... Собственно черную полоску можно сделать в пейнт эвенте.
Но в общем-то вопрос все равно открыт - как сделать сплиттер 0й ширины?) Когда 2 виджета визуально разделены только рамкой
« Последнее редактирование: Ноябрь 11, 2009, 13:39 от Авварон » Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #6 : Ноябрь 11, 2009, 13:53 »

А что если:
нарисовать поверх разделительной ручки толщиной в один пиксель, ещё виджет нужной ширины но прозрачный и транслировать события мыша с него в ручку?
Записан

Юра.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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