Russian Qt Forum

Qt => QSS => Тема начата: navrocky от Апрель 18, 2012, 12:46



Название: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 18, 2012, 12:46
Надоело уже быть снайпером.  >:(

ВНИМАНИЕ. Речь идет о модном интерфейсе самого Qt Creator! Давайте не путать Qt и QtCreator..

Попробовал покурочить его через style sheets - не помогло (

qtcreator.qss:
Код
CSS
QMainWindow::separator {
 width: 10px;
 height: 10px;
}
 
QSplitter::handle:vertical {
 height: 10px;
}
 
QSplitter::handle:horizontal {
 width: 10px;
}

Код
Bash
> qtcreator -stylesheet qtcreator.qss

Гугление тоже что-то не помогает... Или меня одного эти микроскопические сплиттеры напрягают?


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Bepec от Апрель 18, 2012, 12:55
Код:
QSplitterHandle
{
background-color: qlineargradient(spread:repeat, x1:0.3235, y1:0.545, x2:0.21, y2:0.545455, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255,255));
width: 5px;
height: 5px;
}

А темку бы перенести в CSS ;)


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в инт
Отправлено: navrocky от Апрель 18, 2012, 14:06
Код:
QSplitterHandle
{
background-color: qlineargradient(spread:repeat, x1:0.3235, y1:0.545, x2:0.21, y2:0.545455, stop:0 rgba(0, 0, 0, 255), stop:1 rgba(255, 255, 255,255));
width: 5px;
height: 5px;
}

Не помогает. Сплиттеры в креаторе сопротивляются и остаются шириной в один пиксел ( Видимо через css это не решить.

А темку бы перенести в CSS ;)
Причем тут CSS когда речь идет об интерфейсе креатора?

Модер, перемести, пожалуйста, тему назад в обсуждение инструментария.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Bepec от Апрель 18, 2012, 14:28
Навроски, видимо ты что-то делаешь не так.

Update:
Чуть соврал - QSplitter::setHandleWidth ( int ) задаёт ширину сплиттера, НО.

Но сплиттер остаётся невидимым и соответственно невнятным. CSS задаёт как раз величину отрисовываемой площади.

PS в любом случае CSS тут тоже полезно.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 18, 2012, 14:44
Навроски, видимо ты что-то делаешь не так.

Update:
Чуть соврал - QSplitter::setHandleWidth ( int ) задаёт ширину сплиттера, НО.

Но сплиттер остаётся невидимым и соответственно невнятным. CSS задаёт как раз величину отрисовываемой площади.

PS в любом случае CSS тут тоже полезно.

Судя по всему, ты не понял чего я хочу. Вот картинка:
http://wstaw.org/m/2012/04/18/plasma-desktopQi1918.png

Я не могу звать setHandleWidth, для этого мне придется патчить код Qt Creator. Пока не очень хочется.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Bepec от Апрель 18, 2012, 15:40
Эммм... Да ты крут однако... Изменить параметры гуи программы, не изменяя исходного кода? Молодца.

По идее вроде есть возможность установки плагина, который бы изменил нужные тебе данные, но сомневаюсь.

Самый идеальный вариант - тупо скачать исходники, тупо открыть ui-шник интерфейса(или найти его код) и тупенько тыкнуть, далее тупенько собрать. Это идеальный наипростейший вариант.

Мой вывод - или тупенько компилить, или умненько ничего не делать. Сам пользуюсь VS c Интегрой ;)

PS точнее надо выражать свои мысли, точнее.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 18, 2012, 16:14
Вот в том и печаль, что похоже без патчей не обойтись. Я думал может есть какое-нибудь решение попроще...

Причем у меня иногда (пару раз было) креатор подглюкивал, его модный стиль отрубался и он выглядел как обычное кутэшное приложение. Как этого добиться что-то не могу вспомнить. Можно было бы тогда его через CSS покурочить на славу )


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Bepec от Апрель 18, 2012, 19:46
CSS - это стиль отображения. Проще выражаясь - нарисовал бы ты сплиттер длиной в 15 см, но работала бы стандартная 3 пиксельная полоска ;)


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 19, 2012, 14:14
В винде я не наблюдаю проблем с активными зонами разделителей в Qt Creator. На глаз (смотрел в экранной лупе) 5 пикселей. То есть проблем с прицеливанием не возникает. Помню, в линуксе, что в гноме, что в kde в стандартных темах очень узкие зоны для окон, постоянно приходилось мучиться с изменением размера окна мышкой за его границы, потому что тупо не попасть. Может у тебя проблема берёт начало оттуда?


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: kamre от Апрель 19, 2012, 16:53
Помню, в линуксе, что в гноме, что в kde в стандартных темах очень узкие зоны для окон, постоянно приходилось мучиться с изменением размера окна мышкой за его границы, потому что тупо не попасть. Может у тебя проблема берёт начало оттуда?

В линуксовых wm обычно можно удерживая Alt двигать окошко через левую кнопку мышки, а ресайзить через правую. Может потому и делают такие тонкие границы, за которые схватиться сложно.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 19, 2012, 16:59
В линуксовых wm обычно можно удерживая Alt двигать окошко через левую кнопку мышки, а ресайзить через правую. Может потому и делают такие тонкие границы, за которые схватиться сложно.
Да, про эту возможность я знаю, но не думаю, что именно поэтому делают такой маразм с "тонкими границами".


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 20, 2012, 09:51
Причем тут ресайзинг окна креатора?
Я не могу попасть в сплиттеры внутри окна. Причем курсор в виде разделителя загорается в широком диапазоне вокруг сплиттера, но попадать мышкой надо чётко в однопиксельную полоску, иначе попадаешь в скроллбар или еще куда-то.

Как оно там под виндой меня не особо интересует к сожалению.

ЗЫЖ Кстати да, проверил - под виндой нормально попадается. Негодяи.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 20, 2012, 10:00
Причем тут ресайзинг окна креатора?
При том, что механизм один и тот же.

Как оно там под виндой меня не особо интересует к сожалению.

ЗЫЖ Кстати да, проверил - под виндой нормально попадается. Негодяи.
Понятно, что вас мало это интересует, но, возможно, проблема не в креаторе, а в оконном менеджере вашей ОС.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 20, 2012, 10:35
Я думаю, с помощью css не получится изменить активную ширину сплиттера. Ширину сплиттера задаёт свойство handleWidth класса QSplitter. В винде оно, кстати, по-умолчанию 5 пикселей. Можно посмотреть в исходниках креатора, что там стоит для сплиттеров, я уверен, что ничего не стоит, всё по-умолчанию, а значит проблема в оконном менеджере.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 20, 2012, 10:45
Э не, кажется, я ошибался. :)

Вот в исходниках креатора в файле minisplitter.cpp вижу такое:
Код
C++ (Qt)
MiniSplitter::MiniSplitter(QWidget *parent)
   : QSplitter(parent)
{
   setHandleWidth(1);
   setChildrenCollapsible(false);
   setProperty("minisplitter", true);
}
 

Тогда не понятно, почему в винде нормально работает даже с handleWidth=1 (проверил в Designer).  :-\


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Bepec от Апрель 20, 2012, 12:03
А ты посмотри, мб минисплиттер создаётся именно под линуксом? Нет там какой-нить такой директивы?


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Авварон от Апрель 20, 2012, 13:29
Блин, даже код прочесть не могут или доку.
Минисплиттер в креаторе почти уже не нужен - он только рисует черную полоску сейчас. Раньше он был нужен для того, чтобы аджастить рект хэндла, увеличивая его на 2 пикселя в каждую сторону (отсюда те 5 пикселей, на к-ых рисуется хэндл). Сейчас этот функционал есть в qt. Более того, в qt5 я даже сделал патч, позволяющий делать сплиттеру хэндл нулевой толщины - при это сохраняется область в 4пикселя, за которую можно тягать.
Проблема у вас не в креаторе, а в обработке событий в кутях. Скорее всего у вас установлено либо говно мамонта, либо кутя криво пропатчена мейнтейнером (как обычно в общем).
Попробуйте обновить кутю, я проверю в опен сузе (но там кажется все ок).
И да, те сплиттеры, которые отделяют документацию нифига не сплиттеры а доквиджеты - и там тягабельная область 1 пиксель а не 5. Это уже косяк креатора что они одно и тоже делают двумя способами. Тут уже ничего не сделать.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: iroln от Апрель 20, 2012, 18:52
Блин, даже код прочесть не могут или доку.
Минисплиттер в креаторе почти уже не нужен - он только рисует черную полоску сейчас. Раньше он был нужен для того, чтобы аджастить рект хэндла, увеличивая его на 2 пикселя в каждую сторону (отсюда те 5 пикселей, на к-ых рисуется хэндл). Сейчас этот функционал есть в qt. ...
Да, чёрт возьми, каждый должен это знать начиная с самого рождения! И код креатора тоже чтоб как свои 5 пальцев! ;D


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 20, 2012, 19:33
Блин, даже код прочесть не могут или доку.
Минисплиттер в креаторе почти уже не нужен - он только рисует черную полоску сейчас. Раньше он был нужен для того, чтобы аджастить рект хэндла, увеличивая его на 2 пикселя в каждую сторону (отсюда те 5 пикселей, на к-ых рисуется хэндл). Сейчас этот функционал есть в qt. Более того, в qt5 я даже сделал патч, позволяющий делать сплиттеру хэндл нулевой толщины - при это сохраняется область в 4пикселя, за которую можно тягать.

Ничего не понял. Какое это отношение имеет к теме?

Проблема у вас не в креаторе, а в обработке событий в кутях. Скорее всего у вас установлено либо говно мамонта, либо кутя криво пропатчена мейнтейнером (как обычно в общем).
Попробуйте обновить кутю, я проверю в опен сузе (но там кажется все ок).

У меня как раз OpenSuse 12.1, Qt4.8.1.

Цитировать
И да, те сплиттеры, которые отделяют документацию нифига не сплиттеры а доквиджеты - и там тягабельная область 1 пиксель а не 5. Это уже косяк креатора что они одно и тоже делают двумя способами. Тут уже ничего не сделать.

Да, может это и доквиджеты, интерфейс извращен до не узнаваемости. Тягабельная область 1 пиксел, хотя курсорчик меняется на сплит в большем диапазоне пикселей. Под виндой, однако, нормально ухватывается сплиттер.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Авварон от Апрель 20, 2012, 22:32
Да, чёрт возьми, каждый должен это знать начиная с самого рождения! И код креатора тоже чтоб как свои 5 пальцев! ;D
Как работает сплиттер написано в _доке_ http://qt-project.org/doc/qt-4.8/qsplitter.html#handleWidth-prop Начать надо было с нее. А мой текст - это исторический оффтоп о том что и как было и почему так. Но доку же никто не прочитал.

navrocky
Протестил. Тягается за 5 пикселей, ось та же самая. Но зато на маке наблюдаю багу (но у меня тягабельны где-то 3 пикселя) и в общем неудобств не замечаю.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: navrocky от Апрель 20, 2012, 23:16
Проблема проявляется, когда слева от сплиттера появляется скролл, тогда если чуть промахнулся, тянешь не сплиттер а кликаешь по скроллу.


Название: Re: Как в Qt Creator увеличить ширину сплиттеров в интерфейсе
Отправлено: Alex Custov от Апрель 23, 2012, 02:41
Понятно, что вас мало это интересует, но, возможно, проблема не в креаторе, а в оконном менеджере вашей ОС.

Думается мне, что оконный менеджер к размеру сплиттеров отношения всё-таки не имеет.