У меня есть QTreeView
с QStandardItemModel
, и я хотел бы иметь возможность запретить пользователю копировать текст элементов.
#include <QMainWindow>
#include <QStandardItemModel>
#include <QTreeView>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr) :
QMainWindow(parent)
{
auto *treeView = new QTreeView(this);
auto *model = new QStandardItemModel(this);
for (int n = 0; n < 5; n++)
model->appendRow(createItem(QString::number(n)));
treeView->setModel(model);
treeView->setContextMenuPolicy(Qt::NoContextMenu);
setCentralWidget(treeView);
}
private:
QStandardItem *createItem(const QString &name)
{
auto *item = new QStandardItem(name);
item->setFlags(Qt::ItemIsEnabled);
return item;
}
};
Я уже сделал элементы недоступными для редактированияи отключил контекстное меню.Тем не менее, пользователь по-прежнему может щелкнуть элемент и скопировать текст, нажав Ctrl+C
.Я могу использовать Qt::NoItemFlags
, но я хочу, чтобы элементы были включены.
Как это сделать?