Название: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: xintrea от Июнь 26, 2009, 16:04 Здравствуйте!
Потребовалось мне тут достаточно точно узнать X-координату "нуливой" позиции курсора в QTextEdit. Я создаю дополнительный курсор, ставлю его на начало текста, и узнаю его X-координату Код: QTextCursor control_cur=textCursor(); Проблема в том, что мне хотелось бы узнать координату относительно всего места, выделенного виджету. А координата возвращается не от нуливой (0,0) точки виджета, а от нуливой точки, образованной за счет толщины рамок. (http://i.piccy.info/i3/1d/c3/58e0c40bfab39b49568dba7d2f3c.png) Таким образом, надо как-то выяснить толщину рамки. В QTextEdit проде как невозможно получить ссылку на QFrame, в которую он заключен (если возможно, то скажите как). Можно получить только некоторые значения frameGeometry () const : QRect frameRect () const : QRect frameShadow () const : Shadow frameShape () const : Shape frameSize () const : QSize frameStyle () const : int frameWidth () const : int среди которых нет толщины линий. Возможно, толщину линий можно вытянуть из frameStyle(), но понять как это сделать пока не могу. Вопрос - как узнать толщину линий рамки, охватывающей виджет? Название: Re: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: SABROG от Июнь 26, 2009, 16:17 Есть еще lineWidth(). Да и вообще все методы, которые наследуются от QFrame. Можно еще посмотреть в сторону QStyleOptionFrame:
Код
Может это еще что-то даст: Код
Название: Re: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: spectre71 от Июнь 26, 2009, 16:27 Есть еще lineWidth(). Да и вообще все методы, которые наследуются от QFrame. Можно еще посмотреть в сторону QStyleOptionFrame: QLineEdit не наследован от QFrame.Название: Re: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: SABROG от Июнь 26, 2009, 16:32 Есть еще lineWidth(). Да и вообще все методы, которые наследуются от QFrame. Можно еще посмотреть в сторону QStyleOptionFrame: QLineEdit не наследован от QFrame.Он пишет о другом классе: Цитировать позиции курсора в QTextEdit Цитировать В QTextEdit проде как невозможно получить К тому же QLineEdit использует тоже QStyleOptionFrame: Код
поэтому это код должен быть справедлив для обоих виджетов: Код: QStyleOptionFrame o; Название: Re: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: spectre71 от Июнь 26, 2009, 16:44 А чем не подходит frameWidth()
Название: Re: Как узнать толщину рамки для QTextEdit (с картинкой) Отправлено: spectre71 от Июнь 26, 2009, 16:52 А для QLineEdit* edt; проще так:
QStyleOptionFrameV2 option; edt->initStyleOption(&option); QRect Rect = style()->subElementRect(QStyle::SE_LineEditContents, &option, edt); |