Russian Qt Forum
Сентябрь 30, 2024, 14:26 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Добавление строки в QTableView  (Прочитано 6107 раз)
zhsch
Гость
« : Июль 21, 2011, 18:25 »

Здравствуйте.
Подскажите решение проблемы: есть QTableView, в него заносится QSqlTableModel.
Задача: по нажатию клавиши в табличке должно появляться новое чистое поле, доступное для редактирования.
Вопрос: есть ли в этих классах какое-либо свойство, которое реализует эту задачу (просто какой-нибудь флаг нужно установить в нужное значение) ? Или нужно вручную обрабатывать сигал с клавиши и привязывать к нему дорисовку пустой строки?
И, если второй вариант, покажите, как с клавишами работать, уверен, что это не сложно и не займет много вашего времени.
Заранее благодарен.
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #1 : Июль 21, 2011, 19:00 »

1.
Код
C++ (Qt)
QSqlTableModel *model;
model->insertRows(model->rowCount() - 1, 1);
2. если по нажатию кнопки (QPushButton/QAction), то см. свойство shortcut; если именно просто по нажатию клавиши, то унаследуйся от QTableView и переопредели keyPressEvent(), в котором будешь отлавливать нужную клавишу
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
zhsch
Гость
« Ответ #2 : Июль 22, 2011, 16:23 »

Да, верно.
 Теперь еще проблема:
 создаю класс
Код:
	class tableView:public QTableView
{
public:
    tableView(QWidget* parent = 0);
    void keyPressEvent(QKeyEvent *event);
};
tableView::tableView(QWidget *parent):QTableView(parent)
{
 
}
 
void tableView::keyPressEvent(QKeyEvent *event){
    switch(event->key()){
    case Qt::Key_Up:
 
             qDebug()<<"Press Up";
               break;
 
           case Qt::Key_Down:
              qDebug()<<"Press Down";
               break;
 
    }
    QTableView::keyPressEvent(event);
}
Пытаюсь создать для него наследника:
Код:
QTableView ta;
    tableView t;
    ta = new QTableView(t);
и вылетает ошибка:
Цитировать
ошибка: 'QTableView::QTableView(const QTableView&)' is private
В чем причина и как исправить?
 Скажите, пожалуйста.
Записан
TaIRou
Гость
« Ответ #3 : Июль 22, 2011, 16:36 »

Пытаюсь создать для него наследника:
Код:
QTableView ta;
    tableView t;
    ta = new QTableView(t);
и вылетает ошибка:
Цитировать
ошибка: 'QTableView::QTableView(const QTableView&)' is private
В чем причина и как исправить?
 Скажите, пожалуйста.

ну new то указатель возвращает
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #4 : Июль 22, 2011, 17:28 »

Пытаюсь создать для него наследника:
Код:
QTableView ta;
    tableView t;
    ta = new QTableView(t);
и вылетает ошибка:
Цитировать
ошибка: 'QTableView::QTableView(const QTableView&)' is private
В чем причина и как исправить?
 Скажите, пожалуйста.
больше класс QTableView тебе не нужен - используй свой класс tableView. и, как правильно заметили выше, надо указателем объявлять переменную, раз создаешь ее через new.
Код
C++ (Qt)
tableView *t = new tableView(this);
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.329 секунд. Запросов: 22.