我已经成功地处理了如何在QPlainTextEdit上接受drop事件:
class PlainTextEdit : public QPlainTextEdit {
public:
PlainTextEdit() {
// setReadOnly(true);
}
void dragEnterEvent(QDragEnterEvent *event) {
qDebug() << "drag";
event->acceptProposedAction();
}
void dropEvent(QDropEvent *event) {
qDebug() << "drop";
event->acceptProposedAction();
}
};但它似乎只有在setReadOnly(false);的情况下才能起作用。不可能两者兼得吗?
上述代码只有在以下情况下才能工作:
// setReadOnly(true);取消注释,就可以防止下降。
发布于 2016-10-13 14:03:49
如果您需要接受drop事件,即使readOnly设置为true,也可以尝试手动取消设置readOnly、接受操作并将readOnly设置回。不是很顺利的解决方案,但它在我刚刚做的测试项目中有效。
cpp:
void LineEdit::dropEvent(QDropEvent *e)
{
e->acceptProposedAction();
QPlainTextEdit::dropEvent(e);
if (wasReadOnly)
setReadOnly(true);
}
void LineEdit::dragEnterEvent(QDragEnterEvent *e)
{
wasReadOnly = isReadOnly();
if (wasReadOnly)
setReadOnly(false);
e->acceptProposedAction();
}
void LineEdit::dragLeaveEvent(QDragLeaveEvent *e)
{
if (wasReadOnly)
setReadOnly(true);
}h:
private:
bool wasReadOnly;做完所有的点滴后,一定要把readOnly改回来。
https://stackoverflow.com/questions/40022204
复制相似问题