QComboBox是QT GUI中的下拉列表框。
class Q_GUI_EXPORT QComboBox : public QWidget
{
Q_OBJECT
常用方法和属性:
(1)addItems
void addItems ( const QStringList & texts )在QComboBox的最后添加一项。
(2)count
int count () const返回列表项总数。
(3)currentIndex
int currentIndex () const当前显示的列表项序号。
(4)currentText
QString currentText () const返回当前显示的文本。
(5)insertItem
void insertItem ( int index, const QString & text, const QVariant & userData = QVariant() )
void insertItem ( int index, const QIcon & icon, const QString & text, const QVariant & userData = QVariant() )
void insertItems ( int index, const QStringList & list )
插入一项或多项至序号index处。
(6)insertSeparator
在序号为index的项前插入分隔线
(7)setItemText
改变序号为index项的文本。
示例:
Window.h
#ifndef __WINDOW_H__
#define __WINDOW_H__
#include <QMainWindow>
#include <QPushButton>
#include <QLineEdit>
#include <QLayout>
#include <QLabel>
#include <QComboBox>
#include <QMessageBox>
#include <QDialog>
class Window : public QMainWindow
{
Q_OBJECT
public:
Window(QWidget *parent = NULL):QMainWindow(parent)
{
QGridLayout *gridLayout = new QGridLayout;
gridLayout->setColumnStretch(0, 1);
gridLayout->setColumnStretch(1, 3);
gridLayout->setMargin(10);
QLabel *lbl_caption = new QLabel(QWidget::tr("Sex:"));
cbo_sex = new QComboBox();
cbo_sex->addItem(QWidget::tr("male"));
cbo_sex->addItem(QWidget::tr("female"));
cbo_sex->insertItem(2, tr("Insert item"));
cbo_sex->insertSeparator(2);
gridLayout->addWidget(lbl_caption, 0, 0);
gridLayout->addWidget(cbo_sex, 0, 1);
QHBoxLayout *bomLayout = new QHBoxLayout;
QPushButton *btn = new QPushButton(QWidget::tr("Select"));
bomLayout->addStretch();
bomLayout->addWidget(btn);
bomLayout->addStretch();
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addLayout(gridLayout);
mainLayout->addLayout(bomLayout);
QWidget *mainWidget = new QWidget;
mainWidget->setLayout(mainLayout);
setCentralWidget(mainWidget);
connect(cbo_sex, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(on_sel_sex(const QString &)));
connect(btn, SIGNAL(clicked()), this, SLOT(on_click_sel()));
}
private:
QComboBox *cbo_sex;
private slots:
void on_sel_sex(const QString &text)
{
QString str;
str = "You select " + text;
QMessageBox::information(this, tr("Info"), str);
}
void on_click_sel()
{
QString str;
str = "You select " + cbo_sex->currentText();
QMessageBox::information(this, tr("Info"), str);
}
};
#endif
main.cpp
#include <QApplication>
#include <QDialog>
#include "Window.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Window *mainWindow = new Window;
mainWindow->resize(200, 100);
mainWindow->setWindowTitle(QWidget::tr("Qt Test"));
mainWindow->show();
return a.exec();
}
编译运行,界面如下: