Russian Qt Forum

Qt => Базы данных => Тема начата: zhsch от Июль 21, 2011, 18:25



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


Название: Re: Добавление строки в QTableView
Отправлено: kambala от Июль 21, 2011, 19:00
1.
Код
C++ (Qt)
QSqlTableModel *model;
model->insertRows(model->rowCount() - 1, 1);
2. если по нажатию кнопки (QPushButton/QAction), то см. свойство shortcut; если именно просто по нажатию клавиши, то унаследуйся от QTableView и переопредели keyPressEvent(), в котором будешь отлавливать нужную клавишу


Название: Re: Добавление строки в QTableView
Отправлено: zhsch от Июль 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
В чем причина и как исправить?
 Скажите, пожалуйста.


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

ну new то указатель возвращает


Название: Re: Добавление строки в QTableView
Отправлено: kambala от Июль 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);