Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->textEdit->setContextMenuPolicy(Qt::CustomContextMenu); ///<这个可以在ui里设置
QTextCursor tc = ui->textEdit->textCursor();
imgMap["desktop"] = qApp->primaryScreen()->grabWindow(0).toImage();
imgMap["desktop1"] = qApp->primaryScreen()->grabWindow(0, 0, 0, 200, 200).toImage();
tc.insertText("I am Fyn");
tc.insertImage(imgMap["desktop"], "desktop");
tc.insertText("I am Hm");
tc.insertImage(imgMap["desktop1"], "desktop1");
}
void Widget::on_textEdit_customContextMenuRequested(const QPoint &pos)
{
QMenu menu;
menu.move(QCursor::pos());
connect(menu.addAction("图片另存为"), &QAction::triggered, [=](){
QTextCursor tc = ui->textEdit->cursorForPosition(pos);
tc.select(QTextCursor::WordUnderCursor);
QString str = tc.selection().toHtml();
int strpos = str.indexOf("img src=");
if(strpos>=0)
{
QString img = str.right(str.size() - strpos);
char imgname[256] ={0};
sscanf(img.toStdString().c_str(), "img src=\"%[^\"]", imgname);
imgMap[imgname].save(QString(imgname)+".jpg");
}
});
menu.exec();
}
一个简单的例子。