Qt:如何访问继承的Widget?

Qt: How to Access Inherited Widget?

我正在创建一个扩展 QPushButton class 的自定义小部件。我的问题是如何引用扩展QPushButton时自动放置在小部件中的按钮?显然,在其上方获取 parentWidget() returns QMainWindow,所以我不确定调用该小部件是为了引用什么,无论是使用 this 关键字还是其他方式。

例如,如果我的自定义 class 除了继承 QPushButton class:

CustomButton::CustomButton(QWidget *parent) 
    : QPushButton(parent) 
{
}

而我的 MainWindow class 只是实例化了该自定义按钮的一个实例:

HomeWindow::HomeWindow(QWidget *parent)
    : QMainWindow(parent)
{
    CustomButton btn = new CustomButton(this);
}

Qt 自动从继承中添加一个 QPushButton: screenshot of the window

我的问题是如何访问从 QPushButton 继承时自动添加的 QPushButton 以便我可以处理它的点击事件并从 CustomButton [=43] 中调整它的大小=].我只是想在 CustomButton.cpp 中调用类似 this->inheritedWidget() 的东西,但不知道那会是什么。

谢谢!

答案: 我希望通过 setMinimumSize() 的重载来处理调整大小,但无法弄清楚如何访问继承的 QPushButton 小部件。您可以使用 QPushButton::setMinimumSize() 或您需要调用的任何其他函数来访问继承按钮的函数。可能是一个简单的问题,但很高兴弄明白了。谢谢大家。

你的问题可以用一个例子来解释得更清楚。

但是,如果您正在做的事情类似于

class MyWidget : public QPushButton {

然后您可以访问您的基 class 的(publicprotected)个成员,就像访问您自己编写的 class 部分的成员一样。不需要什么特别的,只需按名称提及基础 class 成员,就像在派生 class.

中添加的成员一样

一个简单的例子:

class Base {
protected:
    int base_int;
};

class Derived : public Base {
    int derived_int;
public:
    int getBaseInt() const { return base_int; }
    int getDerivedInt() const { return derived_int; }
};

如果有歧义(比如 base 和 derived 都有相同名称的成员),那么您可以通过使用完全限定名称引用 Base 成员来解决该歧义:

int getBaseInt() const { return Base::base_int; }

但您很少需要这样做。