在textEdit中加入小按钮并布局,如下:
edtBtn = new QPushButton(textEdit);
edtBtn->setText(CN("点击"));
edtBtn->setFixedSize(18, 18);
edtBtn->setCursor(QCursor(Qt::PointingHandCursor));
QHBoxLayout *btnLayout = new QHBoxLayout;
btnLayout->setMargin(0);
btnLayout->addStretch();
btnLayout->addWidget(edtBtn);
QVBoxLayout *vLayout = new QVBoxLayout;
vLayout->setMargin(1);
vLayout->addLayout(btnLayout);
vLayout->addStretch(1);
vLayout->setDirection(QBoxLayout::TopToBottom);
textEdit->setLayout(vLayout);
以下根据个人需要
按钮可见性控制:
bool TextEdit::eventFilter(QObject *watched, QEvent *event)
{
if (watched == ui->textEdit) {
if (event->type() == QEvent::FocusOut) {
if (edtBtn == dynamic_cast<QPushButton*>(QWidget::focusWidget()))
{
edtBtn->setVisible(true);
}
else
{
edtBtn->setVisible(false);
}
}
if (event->type() == QEvent::FocusIn) {
edtBtn->setVisible(true);
}
}
return TextEdit::eventFilter(watched, event);
}