Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: tumanovalex от Октябрь 19, 2010, 07:23



Название: Добавление новой строки по клавише Tab и скрытие календаря по клавише Esc
Отправлено: tumanovalex от Октябрь 19, 2010, 07:23
1. Хотелось бы, чтобы при нажатии клавиши Tab в последней ячейки последней строки QTableWidget добавлялась новая строка. Сейчас у меня действует функция:
Код:
void MainWindow::on_tblData_currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) {
  int nRow = ui->tblData->rowCount();
  int nCol = ui->tblData->columnCount();
  if(nRow==currentRow+1 &&  nCol == currentColumn+1) {
    ui->tblData->insertRow(nRow);
  }
}
которая приводит к добавлению новой строки по щелчку мыши в последней ячейки или при нажатии любой клавиши. Т.е. новая строка появляется даже тогда, когда это и не нужно. Подскажите, пожалуйста, как сделать добавление строки только при нажатии клавиши Tab в последней ячейке.
2. По нажатию кнопки "V" на форме появляется скрытый ранее календарь для ввода даты в QDateEdit. Хотелось бы по клавише Esc отменить появление календаря (скрыть его снова). Сейчас календарь скрывается только после выбора в нем даты. Подскажите, пожалуйста, как это сделать.
Прикрепляю свой проект.


Название: Re: Добавление новой строки по клавише Tab и скрытие календаря по клавише Esc
Отправлено: merke от Октябрь 19, 2010, 10:37
http://www.java2s.com/Code/Cpp/Qt/InstalleventfilterforQLineEdit.htm


Название: Re: Добавление новой строки по клавише Tab и скрытие календаря по клавише Esc
Отправлено: SABROG от Октябрь 19, 2010, 11:39
Код
C++ (Qt)
   QShortcut* tabShortcut =
           new QShortcut(QKeySequence(Qt::Key_Tab)
                         , ui->tableWidget->viewport());
   QObject::connect(tabShortcut
                    , SIGNAL(activated()), this, SLOT(onTabPress()));
 
Код
C++ (Qt)
void Widget::onTabPress()
{
   int rowCount = ui->tableWidget->rowCount();
 
   if (rowCount < 1 || ui->tableWidget->currentRow() == rowCount-1) {
       ui->tableWidget->insertRow(rowCount);
   }
}
 

2. По нажатию кнопки "V" на форме появляется скрытый ранее календарь для ввода даты в QDateEdit. Хотелось бы по клавише Esc отменить появление календаря (скрыть его снова). Сейчас календарь скрывается только после выбора в нем даты. Подскажите, пожалуйста, как это сделать.
Прикрепляю свой проект.
У меня стандартное поведение для всплывающего календаря QDateEdit на нажатие ESC - скрытие календаря.