Qt界面设计时遇到的一些知识点

1.给widget设置背景图片

QPalette palette;//创建一个调色板对象
QString filename =QDir::currentPath()+"/image/CurrentPersonAndCar.png";
QPixmap pixmap(filename);//设定图片
palette.setBrush(ui.widget_visitor->backgroundRole(),QBrush(pixmap));
ui.widget_visitor->setPalette(palette);//设置窗口调色板为palette,窗口和画笔相关联

注意需要在qt designer上讲控件的勾上,否则不能显示

4.设置listwidget背景色为透明

ui.listWidget_visitor->setStyleSheet("background-color:transparent");

3.listwidet中添加自定义item

QListWidgetItem* pListWidgetItem1 = new QListWidgetItem;
QListWidgetItem* pListWidgetItem2 = new QListWidgetItem;
QListWidgetItem* pListWidgetItem3 = new QListWidgetItem;
DeviceItem* pDeviceItem1 = new DeviceItem; //自定义QWidget
DeviceItem* pDeviceItem2 = new DeviceItem;
DeviceItem* pDeviceItem3 = new DeviceItem;
pListWidgetItem1->setSizeHint(QSize(200,80));
pListWidgetItem2->setSizeHint(QSize(200,80));
pListWidgetItem3->setSizeHint(QSize(200,80));
ui->listWidget->addItem(pListWidgetItem1);
ui->listWidget->addItem(pListWidgetItem2);
ui->listWidget->addItem(pListWidgetItem3);
ui->listWidget->setItemWidget(pListWidgetItem1,pDeviceItem1);    
ui->listWidget->setItemWidget(pListWidgetItem2,pDeviceItem2);
ui->listWidget->setItemWidget(pListWidgetItem3,pDeviceItem3);

4.QStringList的操作方法

https://blog.csdn.net/haiross/article/details/49862217

5.自定义结构体作为信号槽参数

如果是自己定义的类型如果想使用signal/slot来传递的话,则没有这么简单。直接使用的话,会产生下面这种错误:

QObject::connect: Cannot queue arguments of type 'TextAndNumber' (Make sure 'TextAndNumber' is registed using qRegisterMetaType().) 

原因:当一个signal被放到队列中(queued)时,它的参数(arguments)也会被一起一起放到队列中(queued起来),这就意味着参数在被传送到slot之前需要被拷贝、存储在队列中(queue)中;为了能够在队列中存储这些参数(argument),Qt需要去construct、destruct、copy这些对象,而为了让Qt知道怎样去作这些事情,参数的类型需要使用qRegisterMetaType来注册(如错误提示中的说明)

解决步骤:(以自定义TextAndNumber类型为例)

自定一种类型,在这个类型的顶部包含:#include <QMetaType>
在类型定义完成后,加入声明:Q_DECLARE_METATYPE(TextAndNumber);
在main()函数中注册这种类型:qRegisterMetaType<TextAndNumber>("TextAndNumber");
如果还希望使用这种类型的引用,可同样要注册:qRegisterMetaType<TextAndNumber>("TextAndNumber&");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值