gpt4 book ai didi

c++ - 启用和禁用粘贴操作

转载 作者:行者123 更新时间:2023-11-28 05:55:32 25 4
gpt4 key购买 nike

我如何启用和禁用粘贴操作,使其像 QTextEdit 的上下文菜单粘贴操作一样起作用?因此,当剪贴板有东西时,粘贴按钮应该启用,当我清除剪贴板时,粘贴按钮应该被禁用。然而,这不会发生在我创建的操作上。

这是我目前所拥有的:

TextEditor::TextEditor(QWidget *parent) :
...
{
...
connect(QApplication::clipboard(), SIGNAL(dataChanged()), this, SLOT(processPaste()));
....
}

void TextEditor::processPaste()
{
if (const QMimeData *md = QApplication::clipboard()->mimeData())
ui->actionPaste->setEnabled(md->hasText());
}

当程序启动且剪贴板为空时,操作将像预期的那样被禁用,当我复制操作启用的内容时,再次像预期的那样,但是当我清除剪贴板时,粘贴操作在应该被禁用时仍然启用就像 QTextMenu 的粘贴操作。

谢谢!

最佳答案

我认为您应该以不同的方式执行此操作,而不是等待更改的信号,而是将您的插槽连接到菜单的 aboutToShow 信号。然后检查剪贴板的状态。这样,您的代码将在菜单即将显示时被调用,您可以相应地更新操作的状态。

另请注意 Qt doc mentions如果您的应用程序未处于事件状态,则 OS X 剪贴板中的 dataChanged() 信号将不起作用。不依赖它的另一个原因。

关于c++ - 启用和禁用粘贴操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34241736/

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