我想在组合框中显示“请选择一个选项”之类的文本,并且不在列表中显示文本,所以我将 setEditable 设置为 true,然后将文本设置为 lineEdit,但在此之后,只有下拉按钮(箭头)是可点击的,我们怎样才能让整个组合框都可以点击呢?我正在使用 QComboBox,如下所示:
QComboBox* combbox= new QComboBox;
combbox->setEditable(true);
combbox->lineEdit()->setReadOnly(true);
combbox->addItem("Option1");
combbox->addItem("Option2");
combbox->lineEdit()->setText("Please select one option");
最佳答案
我解决了这个问题如下:
class QTComboBoxButton : public QLineEdit
{
Q_OBJECT
public:
QTComboBoxButton(QWidget *parent = 0);
~QTComboBoxButton();
protected:
void mousePressEvent(QMouseEvent *);
};
QTComboBoxButton::QTComboBoxButton(QWidget *parent /* = 0 */) :
QLineEdit(parent)
{
}
QTComboBoxButton::~QTComboBoxButton()
{
}
void QTComboBoxButton::mousePressEvent(QMouseEvent * e)
{
QComboBox* combo = dynamic_cast<QComboBox*>(parent());
if(combo)
combo->showPopup();
}
QComboBox* combbox= new QComboBox;
combbox->setEditable(true);
combbox->setLineEdit(new QTComboBoxButton(combbox));
combbox->lineEdit()->setReadOnly(true);
combbox->addItem("Option1");
combbox->addItem("Option2");
combbox->lineEdit()->setText("Please select one option");
关于c++ - QComboBox : Can we make the entire combobox clickable, 不只是下拉按钮(箭头)本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31197772/