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上讲控件的img勾上,否则不能显示

2.设置listwidget背景色为透明

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

3.listwidet中添加自定义item

PassVisitorInfo *passVisitor = new PassVisitorInfo(ui.listWidget_passvisitor,
photoul,QString::fromLocal8Bit(cPersonStyle));
QListWidgetItem *item = new QListWidgetItem(ui.listWidget_passvisitor);
item->setSizeHint(QSize(140,168));
item->setBackgroundColor(QColor(8,25,53,255));
ui.listWidget_passvisitor->addItem(item);
ui.listWidget_passvisitor->setItemWidget(item,passVisitor);
delete ui.listWidget_carnumber->takeItem(0); //移除第一项

4.QStringList的操作方法

https://blog.youkuaiyun.com/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&");

6.在label控件上显示图片

QString numPic = QString::fromStdString("border-image: url(")+QString::fromLocal8Bit(carNumPic.c_str())+QString::fromStdString(")");//抓拍车牌照片
ui.label_cardisplay->setStyleSheet(bodyPic);

7.qt信号槽机制

signals:
    void signalVisitorDisplayAndAddList(DoorCard& vDoorCards);
    void signalCarDisplayAndAddList(std::string &carBodyPic,std::string &carNumPic);
public slots:
    void ClickButtonClose();
    void TextChangeSearch(const QString &text);

将信号和槽进行关联

connect(ui.listWidget_car, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(CarNameItemClicked(QListWidgetItem*)));
​
connect(this, SIGNAL(signalVisitorDisplayAndAddList(DoorCard&)), this, SLOT(VisitorDisplayAndAddList(DoorCard&)));

触发信号

emit signalVisitorDisplayAndAddList(doorCard);

img

或者在qt ui界面控件上设置信号槽

img

8.一些qt界面控件的背景\图片\字体设置

QPalette pa_visitorlist;//创建一个调色板对象 vl = visitor list
QString bgfile_visitorlist = QDir::currentPath()+ "/image/ComingVisitorAndCar.png";
QPixmap pixmap_visitorlist(bgfile_visitorlist);//设定图片
pa_visitorlist.setBrush(ui.widget_visitor->backgroundRole(),QBrush(pixmap_visitorlist));
ui.widget_visitor->setPalette(pa_visitorlist);//设置窗口调色板为palette,窗口和画笔相关联
QString str_visitorlist = QString::fromLocal8Bit("访客人员");
QFont font_visitorlist("Microsoft YaHei", 19, QFont::Normal);
ui.label_visitor->setFont(font_visitorlist);
QPalette pa_vl;
pa_vl.setColor(QPalette::WindowText, Qt::white);
ui.label_visitor->setText(str_visitorlist);
ui.label_visitor->setPalette(pa_vl);
ui.listWidget_visitor->setStyleSheet("background-color:transparent");//list背景透明

9.单例类的使用

#ifndef _GLOBALCONFIG_H
\#define _GLOBALCONFIG_H
\#include <string>
​
using namespace std;
​
class CGlobalConfig
{
    public:
        CGlobalConfig();
        ~CGlobalConfig();
        static CGlobalConfig* GetInstance()
        {
            static CGlobalConfig inst;
            return &inst;
        }
        void Init();
        int GetClientType()
        {
            return m_iClientType;
        }
​
    private:
        int m_iClientType;//客户端显示类型
        string m_strCMSIP; // CMS的IP
        int m_iCMSPort; // CMS的端口
        string m_strMQIP; // MQ的IP
​
    /** @fn         DecryptAES
        \*  @brief       解密
        \*  @para       const string& strKey  秘钥
        \*  @para       const string& strData    数据
        \*  @return     string   解密后的数据
    */
        string DecryptAES( const string& strKey, const string& strData );
};
\#endif // _GLOBALCONFIG_H

使用

string strPlatformIP = CGlobalConfig::GetInstance()->GetCMSIP()/*"10.33.29.131"*/;
int iPlatformPort = CGlobalConfig::GetInstance()->GetCMSPort();
string strAMQIP = CGlobalConfig::GetInstance()->GetMQIP();

10.清空qt line-edit控件

ui.lineEdit_carNumber->clear();

11.清空listwiget的item

ui.listWidget_car->clear();

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值