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 的(public
和 protected
)个成员,就像访问您自己编写的 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; }
但您很少需要这样做。
我正在创建一个扩展 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 的(public
和 protected
)个成员,就像访问您自己编写的 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; }
但您很少需要这样做。