crossplatform.ru

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

2 страниц V  < 1 2  
Ответить в данную темуНачать новую тему
> QTableWidget, как вставить кнопку вместо QTableWidgetItem?
sploid
  опции профиля:
сообщение 21.9.2008, 22:24
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 26.2.2008
Из: Москва
Пользователь №: 106

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




Репутация:   1  


edwardoid, ты усложняешь, Litkevich Yuriy, прав насчет именования объектов. Есть другой вариант реализации подобной схемы. Например делаешь свою кнопку:
class MyButton : public QPushButton
{
    Q_OBJECT
  public
    MyButton( const QString& button_id ) : m_button_id( button_id ){ };
    QString button_id( ) const { return m_button_id; };
  private:
    QString m_button_id;
};

далее в слоте:
MyClass::MySlot()
{
  MyButton *click_btn = qobject_cast<MyButton*>(sender());
  QString button_id = click_btn->button_id();
  //что-то делаем с идентификатором кнопки.
}


примерно так ( код не компилил, так что на баги ищи сам ).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
NuQLe@R
  опции профиля:
сообщение 23.3.2009, 13:52
Сообщение #12


Новичок


Группа: Новичок
Сообщений: 1
Регистрация: 23.3.2009
Пользователь №: 632

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




Репутация:   0  


Чтобы не плодить темы, решил спросить тут.
Как проинициализировать виджет,вставленный в ячейку таблицы QWidgetTable?
В данном примере нужно задать Cell widget в виде выпадающего списка и записать в него comm_list.
QStringList comm_list=(QStringList() << ">" << "<"<< "v" <<"s" <<"?" <<"!");

        for (int i=0;i <= ui->tableWidget->rowCount(); i++)
        {

            ui->tableWidget->setCellWidget ( i, 0, new QComboBox );
            //ui->tableWidget->cellWidget(i,0)   ???
        }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.3.2009, 16:45
Сообщение #13


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(NuQLe@R @ 23.3.2009, 16:52) *
Как проинициализировать виджет,
создай динамически виджет, настрой его, а затем добавь:
QComboBox *w = new QComboBox();
w->foo(); // нужная функция
setCellWidget ( i, 0, w );
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 22.6.2010, 1:00
Сообщение #14


Студент
*

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

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




Репутация:   0  


Решил новую тему не создавать, потому что вопрос похожий. В QTableWidget вставляю QDoubleSpinBox'ы. Не получается вытянуть из спинбоксов значения. Делаю вот что:
    for (int i=0; i<dimension; i++)
        tableProbability->setCellWidget(i, 0, new QDoubleSpinBox);
...
double* probability = new double[numNode];
        for (int i = 0; i < numNode; i++)
        {
//            probability[i] = tableWidget->item(i,0)->data(Qt::EditRole).toDouble();
            QDoubleSpinBox *widget = qobject_cast<QDoubleSpinBox *>(tableWidget->cellWidget(i,0));
            probability[i] = widget->value();
        }

Компилируется нормально, но при выполнении вылетает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.6.2010, 7:31
Сообщение #15


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(vanvo @ 22.6.2010, 5:00) *
Компилируется нормально, но при выполнении вылетает.
хорошей привычкой является проверять указатель после qobject_cast, т.к., если приведение не удалось, то возвращается нуль.
Для отладки напиши так:
qDebug() << "Class in cell is" << tableWidget->cellWidget(i,0)->metaObject()->className();

и посмотри, что будет напечатано в консоли.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 22.6.2010, 7:50
Сообщение #16


Студент
*

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

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




Репутация:   0  


Litkevich Yuriy, возвращается null-указатель.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 22.6.2010, 7:54
Сообщение #17


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(vanvo @ 22.6.2010, 5:00) *
tableProbability->setCellWidget
Цитата(vanvo @ 22.6.2010, 5:00) *
tableWidget->cellWidget

судя по коду, устанавливаешь ячейку в одном виджете, а читаешь из другого
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
vanvo
  опции профиля:
сообщение 22.6.2010, 8:10
Сообщение #18


Студент
*

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

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




Репутация:   0  


Litkevich Yuriy, да, дело оказалось в этом. Надо же так просмотреть...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 16:05