我可以以某种方式QVariant::isNull()与自定义Q_DECLARE_METATYPE()类型一起使用吗?
例如,如果我为整数定义了此类包装器类(为什么要这样做,但这应该是一个最小的示例)。定义bool isNull() const成员函数没有帮助:
#include <QVariant>
#include <QDebug>
class Integer {
bool null;
int x;
public:
Integer() : null(true), x(0) {}
Integer(int x) : null(false), x(x) {}
int value() const {
return x;
}
bool isNull() const {
return null;
}
};
Q_DECLARE_METATYPE(Integer)
int main()
{
Integer x(42);
Integer y(0);
Integer z;
qDebug() << x.isNull() << QVariant::fromValue(x).isNull();
qDebug() << y.isNull() << QVariant::fromValue(y).isNull();
qDebug() << z.isNull() << QVariant::fromValue(z).isNull(); // Not as expected!
}
Run Code Online (Sandbox Code Playgroud)
输出:
false …Run Code Online (Sandbox Code Playgroud) 为什么我不能从GridViewRowPresenterBase派生出来?
public class GridViewRowPresenterEx : GridViewRowPresenterBase
{
protected override void OnColumnPropertyChanged(GridViewColumn c, string s)
{
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下编译错误:
'GridViewRowPresenterEx'不实现继承的抽象成员System.Windows.Controls.Primitives.GridViewRowPresenterBase.OnColumnPropertyChanged(System.Windows.Controls.GridViewColumn,string)'
'GridViewRowPresenterEx.OnColumnPropertyChanged(System.Windows.Controls.GridViewColumn,string)':找不到合适的方法来覆盖