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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QSplitter customization  (Прочитано 5648 раз)
Alp
Гость
« : Сентябрь 04, 2009, 19:28 »

Хочется немного изменить стандартны QSplitter малыми силами. Отсюда вопрос: можно ли изменять ширину самого разделителя, т.е. той части за которую таскается содержимое?
Записан
Rcus
Гость
« Ответ #1 : Сентябрь 04, 2009, 19:30 »

Непосредственно у класса QSplitter всего 4 свойства, только одно из имеет численный тип и своим названием как бы намекает что да, можно.
Записан
Alp
Гость
« Ответ #2 : Сентябрь 04, 2009, 19:41 »

А, эта штука хэндлом зовется! Спасибо.
А положить на него картинку можно? Т.е. вот я создаю свой QSlitterHandle, перегружаю у него paintEvent... А как его установить сплиттеру?

говорят можно так:
Код
C++ (Qt)
QPixmap pixmap("test.png");
splitter->setHandleWidth(pixmap.width());
QLabel* label = new QLabel(splitter->handle(1));
label->setPixmap(pixmap);
« Последнее редактирование: Сентябрь 04, 2009, 19:42 от Alp » Записан
Rcus
Гость
« Ответ #3 : Сентябрь 04, 2009, 19:55 »

Не совсем так, в документации к QSplitterHandle указано как установить свой хендл для разделителя (наследование и переопределение фабричного метода)
Записан
Alp
Гость
« Ответ #4 : Сентябрь 04, 2009, 22:45 »

Не совсем так, в документации к QSplitterHandle указано как установить свой хендл для разделителя (наследование и переопределение фабричного метода)
Ну приведенный пример вполне рботоспособен. Пока что не удалось одно сделать - приделать к хэндлу лауаут, что бы картинка лежала по центру сплиттера. В остальном такой трюк годится.
Записан
spectre71
Гость
« Ответ #5 : Сентябрь 05, 2009, 09:01 »

Не совсем так, в документации к QSplitterHandle указано как установить свой хендл для разделителя (наследование и переопределение фабричного метода)
Ну приведенный пример вполне рботоспособен. Пока что не удалось одно сделать - приделать к хэндлу лауаут, что бы картинка лежала по центру сплиттера. В остальном такой трюк годится.

Код
C++ (Qt)
class MySplitter : public QSplitter {
 Q_OBJECT
public:
 MySplitter(QWidget *parent = NULL);
 virtual ~MySplitter();
protected:
 virtual QSplitterHandle* createHandle(void);
 
};
 
class MySplitterHandle : public QSplitterHandle {
 Q_OBJECT
public:
 MySplitterHandle(Qt::Orientation orientation, QSplitter* parent);
 virtual ~MySplitterHandle();
 
protected:
 virtual void paintEvent(QPaintEvent* event);
};
 

Код
C++ (Qt)
QSplitterHandle* MySplitter::createHandle() {
 MySplitterHandle* SplitterHandle = new MySplitterHandle(orientation(), this);
...
...  
 return SplitterHandle;
}
 
void MySplitterHandle::paintEvent(QPaintEvent* event) {
...
...
}  
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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