Qt可检查的动作
Qt checkable actions
我正在制作一个富文本编辑器,我在可检查操作方面遇到了麻烦。现在我有:
void WordWriteMainWindow::on_actionItalic_toggled(bool arg1)
{
if(arg1==true)
{
ui->textEdit->setFontItalic(true);
}
else
{
ui->textEdit->setFontItalic(false);
}
}
在大多数情况下,它是有效的。但是,我想让这个动作只在你要输入斜体时才被检查。只有在不使用斜体的情况下,才会检查特定的操作。例如:如果您正在正常键入,并且单击一个斜体区域,您将开始以斜体键入,但该操作将未选中。或者如果你高亮一些东西,然后点击斜体,然后你点击到非斜体的地方它会被检查,你不会键入斜体。
我需要使用信号和插槽吗?或者是某种"如果-否则"的梯子?谢谢你的关心。我期待着解决这个恼人的问题。并期待未来的许多道路障碍,因为在保存文件等方面会有一些。
首先,您的代码不是很好读。为什么不将"bool arg1"替换为更具描述性的东西,如"启用bool"或甚至"bool斜体"?之后,您还可以将该函数变成简单的一行代码:
void WordWriteMainWindow::on_actionItalic_toggled(bool italic)
{
ui->textEdit->setFontItalic(italic);
}
回到你的实际问题,是的,必须有"某些东西"将动作状态与QTextEdit
认为当前活动的状态联系起来——到目前为止,你已经指定了相反方向的耦合。QTextEdit提供了currentCharFormatChanged(const QTextCharFormat &)信号,你可以连接到。将您的另一个插槽连接到它并更新它的action checked状态:
void WordWriteMainWindow::updateActionStateFromFormat(const QTextCharFormat &f)
{
ui->yourItalicAction->setChecked(f.fontItalic());
}
当然,你必须把那个信号连接到你的插槽。最简单的方法是将其添加到构造函数中:
WordWriteMainWindow::WordWriteMainWindow()
{
// your existing code goes here
connect(ui->textEdit, SIGNAL(currentTextFormatChanged(QTextCharFormat)),
this, SLOT(updateActionStateFromFormat(QTextCharFormat)));
}
相关文章:
- 如何通过拖动鼠标QT检查按钮?鼠标移动事件
- QT如何检查表格小部件类型
- 来自行编辑的 Qt 值和来自 QCheckBox 的检查值无法按预期工作
- QT/c++ 如何检查全局是鼠标按下还是释放?
- QT MySql 数据库检查登录名和密码以登录
- QT按钮组和可检查的按钮:如何将切换信号与整数和布尔值连接?
- Qt - 有没有办法检查窗口是否标记为始终在顶部(linux)?
- 如何在QT中检查[Shift Tab]是否被按下
- 使用 qt c++ 检查 Xml 中是否存在根元素
- C++ Qt - 检查 Steam 游戏是否以编程方式运行
- QT MetaObject从单独的动态库进行检查
- 如何检查QT中选定驱动器的可用可用空间
- 如果数据库可到达,如何快速检查?(QT,QML,C ) - Linux
- 检查Qt c ++应用程序是否以sudo的形式运行
- 如何在 C++ 中检查 Qt 中是否存在文件
- 有没有办法检查Qt中的重复连接
- 检查QT输入的输入
- 检查Qt是否提供键盘和鼠标
- QT -检查QT应用程序是否为焦点应用程序
- 是否有一种方法可以检查Qt中的QObject指针是否仍然有效