水木社区手机版
首页
|版面-编程技术(Programming)|
新版wap站已上线
返回
1/1
|
转到
主题:问一个宏的写法
楼主
|
lobachevsky
|
2022-02-21 12:23:47
|
只看此ID
我有一堆checkbox(Qt里面的)需要做初始化
ui->checkbox0->setText(strArr[0])
ui->checkbox1->setText(strArr[1])
...
我想写一个宏,省代码
#define set_chk(i) ui->checkbox###i->setText(strArr[i])
我的想法是先要将#i替换,然后再和checkbox##进行粘接,但是这样是不对的
请问对的应该如何写
--
FROM 1.202.141.*
1楼
|
GoGoRoger
|
2022-02-21 12:35:06
|
只看此ID
把宏拆成两个呗。。。
【 在 lobachevsky 的大作中提到: 】
: 我有一堆checkbox(Qt里面的)需要做初始化
:
: ui->checkbox0->setText(strArr[0])
: ...................
--
FROM 222.129.50.*
2楼
|
KillnCov
|
2022-02-21 13:07:55
|
只看此ID
两个#即可。不要用3个。
checkbox##i
【 在 lobachevsky 的大作中提到: 】
: 我有一堆checkbox(Qt里面的)需要做初始化
:
: ui->checkbox0->setText(strArr[0])
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*
3楼
|
lobachevsky
|
2022-02-21 13:41:41
|
只看此ID
两个#不行
报错,说ui没有checkboxi这个member
他把i直接和checkbox粘合了,并没有做替换
【 在 KillnCov 的大作中提到: 】
: 两个#即可。不要用3个。
: checkbox##i
--
FROM 1.202.141.*
4楼
|
KillnCov
|
2022-02-21 13:47:36
|
只看此ID
把原始代码贴出来,肯定可以
【 在 lobachevsky 的大作中提到: 】
: 两个#不行
:
: 报错,说ui没有checkboxi这个member
: ...................
--来自微水木3.5.11
--
FROM 140.206.195.*
5楼
|
lobachevsky
|
2022-02-21 19:40:44
|
只看此ID
我知道为神马了
我用了一个循环来调用这个宏
for (i = 0; i < LEN; i ++)
{
set_chk(i);
}
这个时候展开会有问题,他不会把i当成变量,而是当成字符去替换
【 在 KillnCov 的大作中提到: 】
: 把原始代码贴出来,肯定可以
--
FROM 1.202.141.*
6楼
|
hothail
|
2022-02-21 20:25:15
|
只看此ID
初始化的时候把checkbox都扔一个数组里就行啦
然后用函数写,多好啊
--
FROM 223.104.3.*
7楼
|
z16166
|
2022-02-21 21:29:28
|
只看此ID
用BOOST_PP_SEQ_FOR_EACH_I()
※ 修改:·z16166 于 Feb 21 21:33:52 2022 修改本文·[FROM: 114.241.225.*]
※ 来源:·水木社区
http://www.mysmth.net
·[FROM: 114.241.225.*]
修改:z16166 FROM 114.241.225.*
FROM 114.241.225.*
8楼
|
fanci
|
2022-02-23 07:23:19
|
只看此ID
实践经验:代码是写一次读100次的,所以直接复制粘贴改改就行,不要用宏…
--
FROM 183.179.53.*
9楼
|
lobachevsky
|
2022-02-25 09:11:16
|
只看此ID
这个看起来好高级的样子
等我试一下
谢谢
【 在 z16166 的大作中提到: 】
用BOOST_PP_SEQ_FOR_EACH_I()
--
FROM 1.202.141.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版