我有一个ListView表.我想添加一些过滤器按钮来根据项目类型隐藏/显示该表的项目.最简单的方法是设置项委托的可见属性.但是,隐藏的项目仍计入listView.contentHeight或listView.visibleArea.heightRatio.因此,这些值在滚动时会发生变化,并影响滚动条的高度和位置,它会折叠,展开,跳转无序.
其他问题是在listView中,如果选择了一个项目,则无法知道其索引,例如它看起来像是在表中的第二位,但实际上由于不可见的项目,它的索引更高.如果根本不计算隐形物品,那可能会很好.
请帮忙解决这个问题.谢谢你们.
ListView{
id: listView
delegate: itemdelegate
}
Component{
id: itemdelegate
Item{
visible: model.type === filteredType ? true: false
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个结构:
struct TypeValue{
u8 type;
union{
u8 u8value;
s8 s8value;
}value;
}
Run Code Online (Sandbox Code Playgroud)
根据类型 var 我们可以有值 fromu8value或s8value。现在我有一个结构TypeValue,我想获得指向value元素的空指针(不关心指针类型),哪个是正确的:
void *ptr = &typevalue.value (1)
OR
void *ptr = &typevalue.value.u8value (2)
Run Code Online (Sandbox Code Playgroud)
(将其放入 for 循环中以根据类型找到正确的值)
当然 (2) 是一种正确的方法,但我必须遍历数据类型才能获得指向正确值的正确指针。但问题是(1)是否正确,因为我想知道指向联合的指针是否等于指向其元素的指针?大/小端会影响结果吗?
我有一个与C中的结构初始化有关的问题.我有一个结构:
struct TestStruct
{
u8 status;
u8 flag1;
u8 flag2;
};
Run Code Online (Sandbox Code Playgroud)
我想要一个泛型函数/宏来初始化这个结构并设置一个参数的值,例如status = 1,简单的方法是:
TestStruct t = {};
t.status = 1;
Run Code Online (Sandbox Code Playgroud)
但是,通过执行此操作,我将状态值设置为两次,在init函数中首先设置为0,然后将其设置为1(优化没有帮助?).
(请不要告诉我t = {1,0,0}我正在寻找一种通用方法)
我正在考虑init函数中的一个宏,例如:
#define INIT_TESTSTRUCT (param, value) \
{ .status=0, .flag1=0, .flag2=0, .param=value }
TestStruct t = INIT_TESTSTRUCT(status, 0);
Run Code Online (Sandbox Code Playgroud)
但是,编译器给出错误"初始化字段被覆盖",因为我已经设置了状态值两次.
请帮助指出如何改变宏来实现我想要的,非常感谢.
我在C中有一个For循环:
u8 i;
for (i=0; i <= 255; i++)
{
//code
}
Run Code Online (Sandbox Code Playgroud)
现在编译器抱怨"由于数据类型的范围有限,比较总是正确的"我知道255是u8 max但是for循环必须有条件.那我应该放在那里?谢谢.