gpt4 book ai didi

c++ - 在 Qt Creator 中将功能附加到按钮的正确方法?

转载 作者:太空狗 更新时间:2023-10-29 21:44:35 24 4
gpt4 key购买 nike

注意:我在Qt creator 5.0中开发<​​/p>

我在看别人的Qt代码,有点懵。在我看来,基本上有两种方法可以实现将函数附加到 QPushButton clicked() 信号的相同任务。

Qt 网站上的教程指示的方法是进入设计 模式,右键单击QPushButton,单击“Go to slot” ...”,然后在创建的函数中编写按钮的代码。

在我目前正在查看的代码中,他们在 MainWindow 类(这是根类)中编写了自己的公共(public)函数。然后在 Design 模式的 Edit/signal slots 模式下,它们将 QPushButton 信号附加(拖动)到 MainWindow ,此时他们选择手动创建的函数作为 slot

这两种方法之间有区别吗,一种方法优于另一种方法吗?

我注意到的主要区别是,如果我采用第一种方法,那么我刚刚创建的槽/信号不会出现在“信号和槽编辑器”中。

最佳答案

The main difference I have noticed is that if I follow the first method, then the slot/signal that I just created does not appear in the "Signal & Slots Editor".

这是因为第一种方法中的插槽是 MainWindow 的专用插槽,而在第二种方法中,按钮将信号发送到公共(public)插槽(或您示例中的函数,恕我直言,这是一个坏习惯做 though) 的 MainWindow。区别很明显,我想私有(private)槽仅在类中使用(在本例中为 MainWindow),不能在类外连接。我相信这对理解代码很有用,这就是为什么我不同意这一点(我强调):

With the first one, you are totally sure of what you're doing, no misspelled words... But hard to be updated if your code comes with poor documentation.

两个原因:

1) 只要您合理地命名插槽(即 PushButton1_Clicked),它所连接的内容就非常明确(PushButton1 的信号 clicked())。

3) 即使该功能在其他地方被重用(恕我直言,这是将其作为公共(public)函数的唯一原因),您最好从按钮的此类私有(private)插槽中调用该函数,而不是将代码中的按钮直接连接到它来处理它作为插槽(这至少又是一件非常令人困惑的事情)。更好的是拥有用于按钮的私有(private)插槽和用于 MainWindow 范围之外所需的任何东西的公共(public)插槽,并且函数本身作为两者调用的私有(private)方法......或者如果该功能未在 MainWindow 之外的信号/插槽中使用,则将其作为公共(public)函数但仍然从按钮的专用槽中调用它,而不是直接连接它。

我之所以这样将其分开,是为了将功能和 UI 分开,这尤其适用于您需要在 UI 元素之外重用代码的情况,但也适用于多个元素使用它的情况。能够看到与 UI 隔离的功能使得更新更容易而不必担心连接到它的 UI 元素。但是,这只是我。 :-)

附言。真实的评论。除非您特别需要按钮在 clicked() 上执行某些操作,否则我建议改用 released() 信号,因为用户可以在单击按钮后重新考虑但使用 clicked () 他做不到。

关于c++ - 在 Qt Creator 中将功能附加到按钮的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19669003/

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