(Qt C ++) Как напечатать выбранные файлы / папки в текстовый файл из QTableView

У меня есть QTableView * tableView. Когда пользователь выбирает файлы / папки в tableView и щелкает правой кнопкой мыши -> и выбирает «Распечатать эти элементы», я хочу, чтобы моя программа печатала эти имена в текстовый файл или присваивала строку. Как я могу это сделать? Спасибо.

frmainwindow.h:

private slots:
void showContextMenuRequested(QPoint pos);

frmainwindow.cpp:

#include "frmainwindow.h"#include "ui_frmainwindow.h"
FrMainWindow::FrMainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::FrMainWindow)
{
ui->setupUi(this);
model1->setRootPath("c:\\");
ui->tableView->setModel(model1);
connect(ui->tableView, SIGNAL(customContextMenuRequested(QPoint)), this,
SLOT (showContextMenuRequested(QPoint)));
}

FrMainWindow::~FrMainWindow()
{
delete ui;
}

void FrMainWindow::showContextMenuRequested(QPoint pos)
{
QMenu *contextMenu = new QMenu(this);
contextMenu->addAction(new QAction("Print these items", this));
contextMenu->popup(ui->tableView->viewport()->mapToGlobal(pos));
}

1

Решение

Прежде всего, подключите ваше действие к слоту обработки:

QAction* action = new QAction("Print these items", this);
connect(action, SIGNAL(triggered(), this, SLOT(printItems())));

Затем вы можете получить доступ к выбранным индексам tableView->selectionModel()->selectedIndexes() и с помощью этих индексов получить доступ к данным model1->data(index):

void printItems()
{
QFile file(QLatin1String("file.txt"));
file.open(QIODevice::WriteOnly);
QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
foreach (QModelIndex index, indexes)
{
file.write(model1->data(index).toString().toLatin1());
}
}
1

Другие решения


По вопросам рекламы [email protected]