qt的textedit检测不到鼠标左键的点击
void MainWindow::mousePressEvent(QMouseEvent *event) {
// 获取点击事件的目标对象
QObject *target = qApp->widgetAt(event->globalPos());
if (target == imageLabel) { // 图片容器
// 将全局位置转换为容器内的相对位置
if (imageLabel->pixmap() == nullptr) {
qDebug() << "Pixmap is null!";
return;
}
QPoint localPos = imageLabel->mapFromGlobal(event->globalPos());
// 获取像素的行列号
int x = localPos.x();
int y = localPos.y();
QPixmap pixmap = imageLabel->pixmap()->copy(); // 复制图像以避免原始图像被修改
QRgb pixelValue = pixmap.toImage().pixel(localPos);
int red = qRed(pixelValue);
int green = qGreen(pixelValue);
int blue = qBlue(pixelValue);
QString pixelStr = QString("行 %1 列 %2,RGB值:R:%3 G:%4 B:%5\n").arg(y).arg(x).arg(red).arg(green).arg(blue);
ui->textEdit->append(pixelStr);
} else if (target==textedit) { // 检查点击事件的位置是否在 textedit 区域内
// 将全局位置转换为容器内的相对位置
QPoint localPos = textedit->mapFromGlobal(event->globalPos());
// 获取点击位置的光标
QTextCursor cursor = textedit->cursorForPosition(localPos);
// 获取当前字
cursor.movePosition(QTextCursor::StartOfWord); // 将光标移动到当前字的开头
cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); // 选择当前字
QString currentWord = cursor.selectedText();
qDebug() << "当前字:" << currentWord;
}else {
qDebug() << "点击了其他地方。";
}
}