gpt4 book ai didi

c++ - QPlainTextEdit dropEvent while setReadOnly(true)

转载 作者:行者123 更新时间:2023-11-30 05:21:35 34 4
gpt4 key购买 nike

我已经设法在 QPlainTextEdit 上接受放置事件:

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);

取消注释并防止掉落。

最佳答案

如果即使 readOnly 设置为 true 也需要接受放置事件,您可以尝试手动取消设置 readOnly,接受一个 Action 并设置 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);
}

:

private:
bool wasReadOnly;

确保在完成所有掉落后将 readOnly 改回。

关于c++ - QPlainTextEdit dropEvent while setReadOnly(true),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40022204/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com