2017-01-30 1 views
0

Я написал код, и мне нужно, чтобы скопировать выбранные строки в Qt C++Копировать в буфер обмена из Tableview

Мой OTPWindow.cpp файл имеет эта функция

SafeOTPWindow::on_tblCopy_clicked() 
{ 
    QClipboard* clip = qApp->clipboard(); 
    clip->setText(ui->tblLog->text()); 
} 

Мой OTPWindow.h файл имеет

private slots: 
    void on_tblCopy_clicked(); 

Я принимаю сообщение об ошибке

текст не является членом Qtableview. Как я могу решить эту ошибку

Мне нужно скопировать содержимое текста из tableview, которые находятся в строках внутри Какое свойство я должен установить в .cpp-файле. Здесь tblLog - мой tableview.

+0

Был мой ответ полезным? –

+0

Да, это сработало. Я также опробовал использование другого метода, который использует Doubleclick it copys, который также работал – cyley

ответ

0

способ добиться того, что вы хотите получить список выбранных элементов и сцепить текст этого элемента, как, как показано ниже:

QStandardItemModel *model = qobject_cast<QStandardItemModel*>(ui->tableView->model()); 

if (!model) //Check if listview has a model 
    return; 

QModelIndexList indexlist = ui->tableView->selectionModel()->selectedIndexes(); 

QString str; 

int lastrow = -1; 

foreach (const QModelIndex &index, indexlist) 
{ 
    if (lastrow >= 0) 
    { 
     if (index.row() == lastrow) 
      str.append(Qt::Key_Space); //Add space between items in same line 
     else 
      str.append("\n"); //Add break line if entering in a new line 
    } 

    str.append(model->index(index.row(), index.column()).data().toString()); 

    lastrow = index.row(); 
} 

str.append("\n"); //Add break line to the end of the string 

QClipboard* clipboard = QApplication::clipboard(); 
clipboard->setText(str); //Copy the string to clipboard