按下任何QPushButton时应用程序范围的日志记录

时间:2019-03-20 00:31:32

标签: c++ qt qt5 qpushbutton

假设我有一个使用Qt制作的应用程序。 在那里我到处都是一堆QPushBUtton。

我希望能够记录按下任何QPushButton的时间。 (应用范围广泛)。假设现有代码应该完整无缺,那么什么是最佳选择?

(从QPushButton派生并重新实现keyPressEvent不是解决方案,因为将更改客户端代码,并且必须使用其他类而不是普通的QPushButton)

1 个答案:

答案 0 :(得分:2)

根据您所指出的,您想知道何时按下按钮,通常是将#include "mainwindow.h" #include "ui_mainwindow.h" #include "imagedelegate.h" #include <QGraphicsPixmapItem> #include <QBuffer> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); leftScene = new QGraphicsScene(this); ui->graphicsView->setScene(leftScene); ui->graphicsView->show(); model = new QStandardItemModel(); ui->tableView->setModel(model); } MainWindow::~MainWindow() { delete ui; } void MainWindow::addData() { // Path on the first column QStandardItem *pathAItem = new QStandardItem(ui->lineEdit->text()); // Image on the second column - not working yet //QStandardItem *image1 = new QStandardItem(/*ui->graphicsView->*/); QPixmap image1; QByteArray img1Array; QBuffer buffer1(&img1Array); buffer1.open(QIODevice::WriteOnly); image1.save(&buffer1, "PNG"); QList<QStandardItem*> row; row << pathAItem; model->setColumnCount(1); model->appendRow(row); } void MainWindow::on_sendBtn_clicked() { addData(); } void MainWindow::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { QString colName = index.model()->headerData(index.column(), Qt::Horizontal).toString(); if(colName == "image1") { QPixmap iconPix; if(!iconPix.loadFromData(index.model()->data(index).toByteArray())) { } iconPix = iconPix.scaledToHeight(32); painter->drawPixmap(option.rect.x(),option.rect.y(),iconPix); } else { // QStyledItemDelegate::paint(painter, option, index); } } 事件发送到QEvent::MouseButtonPress的时间,为此,您必须覆盖通知QPushButton

的方法
QApplication