![]() |
|
![]() ![]() ![]() |
|
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
Подскажите пож-та как при работе с этим виджетом:
1.задать размеры определенному столбцу/ строке таблицы 2.считать в переменную значение какой-либо ячейки грида 3. как задать текст для ячейки, находящейся на пересечении строки и столбца заголовков (те, что серые)? 4. запретить ввод данных в определенный столбец/строку таблицы? |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
с п.1 и п.3 вроде разобрался - подскажите пож- та ответы на пп. 2 и 4...!!!
|
|||
|
||||
SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Соответственно для целой колонки нужно пробежаться по всем ячейкам или сформировать итемы в цикле. Тоже самое касается и строк. |
||||
|
|||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
понятно...спасибо...
а все таки - можно ли задать текст для ячейки, находящейся на пересечении строки и столбца заголовков (те, что серые)?каким именно образом? |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Это сообщение отредактировал(а) SABROG - 28.3.2010, 13:09 |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
SABROG: а чему задавать параметр col в Вашем примере?
|
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Колонке (col) или Строке (row). |
|||
|
||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
SABROG:
1. по поводу "считать в переменную значение какой-либо ячейки грида" почему тогда код:
не выводит значение ячейки (0,0), введенное туда мною руками? ввожу, допустим 10, а ответ всегда 0....как будет правильно? 2. насчет "задать текст для ячейки, находящейся на пересечении строки и столбца заголовков (те, что серые)" - я знаю что такое col и row .- чему конкретно их надо задавать, чтобы проставить текст в ячейку под знаком "?" - см. прилагаемый рисунок... Присоединённый файл ( Кол-во скачиваний: 13 ) ![]() |
|||
|
||||
SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Потому, что ты менял не Qt::UserRole, а Qt::DisplayRole. QString::number()/toInt(), что за масло масляное? Может все-таки документацию почитаешь про роли, про тип QVariant? Я выбрал Qt::UserRole и тип int в качестве примера, которого ты так просил. Но это лишь демонстрация того, что к ячейке с текстом "Hello, Word" можно привязать почти безграничное количество своих данных любых типов: Qt::UserRole, Qt::UserRole + 1, Qt::UserRole + 2 ... Qt::UserRole + N. Чтобы получить текстовый "Hello, world!" достаточно написать:
Лучше бы сразу рисунок приложил, не пришлось бы голову ломать или написал бы "верхняя левая пустая серая ячейка в заголовке". Она называется Corner Button. Изначальная её задача выделять все ячейки как в Excel, а не быть заголовком. Если тебе нужен текст на ней, то можно воспользоваться "хаком":
|
||||||
|
|||||||
gordmiand |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
SABROG: большое спасибо за ответы....
тем не менее хотел бы Вам пояснить: 1. "QString::number()/toInt(), что за масло масляное?" toInt() использую, чтобы считать числовое значение из заданной ячейки грида, а QString::number() - чтобы вывести это значение в lineEdit - у него ж свойство типа string а я хочу вывечти число - соот-но и использую преобразование... 2. по п.2. - неужели так все сложно чтобы вывести тескт в эту пресловутую ячейку? я тогда лучше в нее помещу Label и на нем напишу нужный мне текст... и неужели "верхняя левая пустая серая ячейка в заголовке" != "ячейка, находящаяся на пересечении серых строки и столбца заголовков таблицы"? но это так, к слову... |
|||
|
||||
SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Смысла нет сначала преобразовывать в int, а потом в QString. Особенно смысл пропадает, когда в QVariant может изначально QString быть помещен.
Это не ячейка, это кнопка. Доступ к кнопке можно получить просто:
Но это не заставит её выводить текст потому, что для QTableWidget/View был написан собственный класс кнопки на базе QAbstractButton - QTableCornerButton. И этот класс сам себя отрисовывает и установка текста в него не предусмотрена реализацией. Если тебе удасться вместо него туда поставить QLabel нормальным способом (не поверх всех виджетов), то я бы хотел посмотреть на этот код. Мне удалось сделать это с помощью "хака", 7 строчек кода без наследований, переопределений и собственного рисования, замена указателя внутри приватных данных Qt: ![]() |
||||||
|
|||||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
SABROG, спасибо за классный хак
![]() Но в моём случае он не подошёл. Распишу в этой теме как свою траблу решил - и ты отревьювишь, и другим в помощь. Мне надо было в таблицу на место корнер-баттон запихнуть свою кнопку - и что бы она себя именно как кнопка вела (без текста, но с иконкой). Полдня плясал вокруг твоего хака - получалось не кузяво: 1. сункен для кнопки в хидере не влиял на её отображение никак. 2. размер иконки получался очень маленьким и никакие сэтИконСайз не помогали - выручала только перерисовка пиксама (дравПиксмап) иконки поверх нарисованного контроллера - очень неудобно и не красиво получалось, т.к. в пиксаме при ресайзе ухудшалось качество иконки 3. внешний вид кнопки - не соответствовал кнопке - когда нажимаешь - картика должна смещаться чутка. ------------------ вообщем поплясал, послясал и плюнул. решил следующим образом: 1. корнер баттон дизейблим (setCornerButtonEnabled(false)) 2. создаём свой пушБаттон и длаем его плоским (flat) 3. перегружаем ресайз, где после QWidget::resize(event) задаём геометрию нашей кнопки. В результате кнопка выглядит как родная (из-за флат) и реагирует на мышку (ховер) и на нажатие (иконка смещает и фон темнее). -------------------- Дорогу осилит идущий |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Особо плясать не пришлось и sunken у фрейма работает (QPushButton/QToolButton/QAbstractButton и т.д. не наследуют QFrame): ![]()
|
|||
|
||||
_GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
SABROG, круто, спасибо большое
![]() я тебе даже больше скажу - ты мне глаза открыл, на использование закрытых кьютишных классов - и чё я их раньше не юзал ![]() огроменнное спасибо за науку Это сообщение отредактировал(а) _GRIN_ - 24.6.2010, 11:17 -------------------- Дорогу осилит идущий |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |