本文主要是介绍Qt实现QComboBox的鼠标点击信号,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
因为项目需求,需要实现点击QComboBox时就发送信号,但是Qt自带的QComboBox类,只提供了以下几种信号:
void activated(int index)
void activated(const QString & text)
void currentIndexChanged(int index)
void currentIndexChanged(const QString & text)
void currentTextChanged(const QString & text)
void editTextChanged(const QString & text)
void highlighted(int index)
void highlighted(const QString & text)
以及继承自QWidget的信号:
void customContextMenuRequested(const QPoint & pos)
void windowIconChanged(const QIcon & icon)
void windowIconTextChanged(const QString & iconText)
void windowTitleChanged(const QString & title)
和继承自QObject的信号:
void destroyed(QObject * obj = 0)
void objectNameChanged(const QString & objectName)
并没有点击事件的信号。故采用继承QComboBox的方式,重载QMouseEvent方法,实现点击事件。代码如下
声明头文件newcombobox.h:
#ifndef NEWCOMBOBOX_H
#define NEWCOMBOBOX_H#include <QWidget>
#include <QComboBox>
#include <QMouseEvent>class NewComboBox : public QComboBox
{Q_OBJECT
public:NewComboBox(QWidget*parent=0);void mousePressEvent(QMouseEvent *event);signals:void clicked(bool);
};#endif // NEWCOMBOBOX_H
定义源文件newcombobox.cpp:
#include "newcombobox.h"NewComboBox::NewComboBox(QWidget *parent):QComboBox(parent)
{}void NewComboBox::mousePressEvent(QMouseEvent *event)
{if(event->button() == Qt::LeftButton){emit clicked(true);}QComboBox::mousePressEvent(event);
}
有两种实例化方式。
第一种:
NewCombox* newComboBox = new NewComboBox();
没有绑定父组件,可以在父组件中通过addWidget的方式,添加这个combobox;
第二种:
NewCombox* newComboBox = new NewComboBox(*parentWidget);
绑定父组件,然后通过布局进行位置、大小等调整。
技术有限,难免存在疏漏,如有错误,还请谅解。
如果有需求,只需修改代码,实现相应功能。
这篇关于Qt实现QComboBox的鼠标点击信号的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!