crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V  < 1 2 3 >  
Ответить в данную темуНачать новую тему
> Маркер в таблице..., Построчно выделять...
fortero
  опции профиля:
сообщение 18.4.2011, 18:24
Сообщение #11


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Уже получилось передать ячейку:
MyDialog *ddd = new MyDialog;
QObject::connect(&table, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), ddd, SLOT(dial(QTableWidgetItem *)));


Вопрос следующий а как из объекта класса QTableWidgetItem извлечь данный и к примеру привратить в класс QString????
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 18.4.2011, 18:26
Сообщение #12


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(fortero @ 18.4.2011, 20:24) *
Уже получилось передать ячейку:
MyDialog *ddd = new MyDialog;
QObject::connect(&table, SIGNAL(itemDoubleClicked(QTableWidgetItem *)), ddd, SLOT(dial(QTableWidgetItem *)));


Вопрос следующий а как из объекта класса QTableWidgetItem извлечь данный и к примеру привратить в класс QString????


Смотрите мой пост выше. А из QTableWidgetItem вы можете получить текст просто, вызвав метод QTableWidgetItem::text();

Сообщение отредактировал silver47 - 18.4.2011, 18:28
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 18.4.2011, 18:29
Сообщение #13


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


А чем плох мой способ передачи???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 18.4.2011, 18:30
Сообщение #14


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(fortero @ 18.4.2011, 20:29) *
А чем плох мой способ передачи???


Ничем. Нормальный способ :) Только, как мне кажется, он будет работать только с QTableWidget. У QTableView передать ячейку не удастся.

Сообщение отредактировал silver47 - 18.4.2011, 18:45
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 18.4.2011, 18:38
Сообщение #15


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем кто участвовал огромное спасибо у меня всё получилось!!! :clapping:
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 20.4.2011, 21:14
Сообщение #16


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


А ещё вопрос, а если мне надо по клавише Enter вызывать сигнал, как это организовать с клавишами я пока не работал ещё??? То есть мне нужно когда я стою на нужной строке и жму клавишу Enetr происходило действие...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 21.4.2011, 5:06
Сообщение #17


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(fortero @ 20.4.2011, 23:14) *
А ещё вопрос, а если мне надо по клавише Enter вызывать сигнал, как это организовать с клавишами я пока не работал ещё??? То есть мне нужно когда я стою на нужной строке и жму клавишу Enetr происходило действие...


1. Изменения которые необходимо внести в заголовочный файл того виджета, на котором таблица расположена:
protected:
    virtual void keyPressEvent(QKeyEvent *pe);


2. Теперь создадим описанный нами метод:
void Widget::keyPressEvent(QKeyEvent *pe){    
    if ((pe->key() == 16777220) | (pe->key() == 16777221)) this->someSlot(); // Enter
}


16777220 и 16777221 - это коды двух клавиш Enter. Чтобы узнать какой код у кнопки, поставьте вывод qDebug() << pe; в самом начале метода. Для того, чтобы знать нажаты ли кнопки-модификаторы (Alt; Ctrl; Shift), нужно проверить вот такое вот условие:

if (pe->modifiers() & Qt::ShiftModifier) // зажат шифт
if (pe->modifiers() & Qt::AltModifier) // зажат альт
if (pe->modifiers() & Qt::CtrlModifier) // зажат Ctrl


Опять же, все тот же, Макс Шлее страница 259

Сообщение отредактировал silver47 - 21.4.2011, 7:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 2.5.2011, 2:26
Сообщение #18


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(silver47 @ 21.4.2011, 5:06) *
Цитата(fortero @ 20.4.2011, 23:14) *
А ещё вопрос, а если мне надо по клавише Enter вызывать сигнал, как это организовать с клавишами я пока не работал ещё??? То есть мне нужно когда я стою на нужной строке и жму клавишу Enetr происходило действие...


1. Изменения которые необходимо внести в заголовочный файл того виджета, на котором таблица расположена:
protected:
    virtual void keyPressEvent(QKeyEvent *pe);


2. Теперь создадим описанный нами метод:
void Widget::keyPressEvent(QKeyEvent *pe){    
    if ((pe->key() == 16777220) | (pe->key() == 16777221)) this->someSlot(); // Enter
}


16777220 и 16777221 - это коды двух клавиш Enter. Чтобы узнать какой код у кнопки, поставьте вывод qDebug() << pe; в самом начале метода. Для того, чтобы знать нажаты ли кнопки-модификаторы (Alt; Ctrl; Shift), нужно проверить вот такое вот условие:

if (pe->modifiers() & Qt::ShiftModifier) // зажат шифт
if (pe->modifiers() & Qt::AltModifier) // зажат альт
if (pe->modifiers() & Qt::CtrlModifier) // зажат Ctrl


Опять же, все тот же, Макс Шлее страница 259


Спасибо, это очень интересно, но а как мне в слот передать информацию о месте нахождения маркера, когда мышей я кликал то я использовал вот такой вариант:
connect(mtab, SIGNAL(cellDoubleClicked(int, int)), this, SLOT(dubleClic_slot(int )));

А тут как быть, как узнать отмеченный маркер, причём последний, ведь случайно можно две строки выделить!
Спасибо за внимание!

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 2.5.2011, 6:05
Сообщение #19


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


гм... Наверное будет работать тоже самое:
QModelIndex index(QTableView::curentIndex());  вместо QTableView - подставьте свою таблицу
if(!index.isValid)) return; // выход если индекс не корректен

QString Str;
Str = index.sibling(index.row(), index.column()).data(Qt::EditRole).toString(); // поместили в переменную Str текст выделенной ячейки


Сообщение отредактировал silver47 - 2.5.2011, 6:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fortero
  опции профиля:
сообщение 2.5.2011, 19:49
Сообщение #20


Участник
**

Группа: Участник
Сообщений: 132
Регистрация: 4.12.2010
Пользователь №: 2242

Спасибо сказали: 0 раз(а)




Репутация:   0  


Одна проблема, у меня не QTableView а QTableWidget, а функций индекс там нет...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V  < 1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 13:44