我使用的是一个QWidget,我想在其中放置一些分隔线。作为分隔线,我使用的是
QFrame *seperatorLine = new QFrame(_toolBar);
seperatorLine->setFrameStyle(QFrame::Sunken | QFrame::VLine);我需要几行分隔符,我很好奇每次是否需要创建一个新的QFrame,或者是否有一种方法可以重用一个(或者使用一个复制构造函数)。
目前,该行仅在最后一个位置,我将其添加到QWidget中。
发布于 2014-07-08 08:43:36
QObject和QWidget派生类无法访问副本构造函数。
相反,您可以在一个小工厂方法中封装您的QFrame属性:
QFrame* createSeparator(QWidget* parent=0) {
QFrame *separatorLine = new QFrame(parent);
separatorLine->setFrameStyle(QFrame::Sunken | QFrame::VLine);
return separatorLine;
}与子类QFrame相比,我更喜欢这个方法来调整QFrame实例的几个属性
“克隆”QObject的一种奇特方法是创建一个新对象并分配所有声明的属性。当然,只有当您希望传递值时,它才是有用的:
CustomObject* CustomObject::clone() {
int count = metaObject()->propertyCount();
CustomObject* clone = new CustomObject(this->parent());
for (int i = 0; i < count; i++) {
const char* prop = metaObject()->property(i).name();
clone->setProperty(prop, property(prop));
}
return clone;
}https://stackoverflow.com/questions/24627182
复制相似问题