首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QPlainTextEdit dropEvent while (真)

QPlainTextEdit dropEvent while (真)
EN

Stack Overflow用户
提问于 2016-10-13 13:20:38
回答 1查看 326关注 0票数 1

我已经成功地处理了如何在QPlainTextEdit上接受drop事件:

代码语言:javascript
复制
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);的情况下才能起作用。不可能两者兼得吗?

上述代码只有在以下情况下才能工作:

代码语言:javascript
复制
//        setReadOnly(true);

取消注释,就可以防止下降。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 14:03:49

如果您需要接受drop事件,即使readOnly设置为true,也可以尝试手动取消设置readOnly、接受操作并将readOnly设置回。不是很顺利的解决方案,但它在我刚刚做的测试项目中有效。

cpp:

代码语言:javascript
复制
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:

代码语言:javascript
复制
private:
    bool wasReadOnly;

做完所有的点滴后,一定要把readOnly改回来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40022204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档