实现点击Qtextedit弹出一个界面,而不是点击边沿弹出 用C++
时间: 2024-02-09 21:11:16 浏览: 101
QT+VS点击按钮弹出新窗口的实现
5星 · 资源好评率100%
如果您想在点击QTextEdit时弹出一个界面,可以使用QTextEdit的clicked信号。以下是一个示例:
```c++
#include <QTextEdit>
#include <QDialog>
class MyTextEdit : public QTextEdit {
public:
MyTextEdit(QWidget *parent = nullptr) : QTextEdit(parent) {}
signals:
void clicked();
protected:
void mousePressEvent(QMouseEvent *event) override {
if (event->button() == Qt::LeftButton) {
emit clicked();
}
QTextEdit::mousePressEvent(event);
}
};
class MyDialog : public QDialog {
public:
MyDialog(QWidget *parent = nullptr) : QDialog(parent) {}
void showEvent(QShowEvent *event) override {
QDialog::showEvent(event);
setFocus();
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MyTextEdit text_edit;
MyDialog dialog;
QObject::connect(&text_edit, &MyTextEdit::clicked, &dialog, &QDialog::show);
text_edit.show();
return app.exec();
}
```
这段代码会在单击QTextEdit时弹出一个对话框。请注意,由于单击事件将被消耗,因此QTextEdit的编辑功能将失效。如果您想保留编辑功能并弹出对话框,请在MyTextEdit中添加一个成员变量来跟踪对话框的打开状态,并在鼠标事件中根据需要打开或关闭对话框。
阅读全文