#include <QtGui>
return s1.toLower() < s2.toLower();
}
{
Q_OBJECT
public:
QString get_item
() const { return lineEdit
->text
();
} void clear() { lineEdit->setText(""); }
private slots:
void filterRegExpChanged
(const QString &s
) { proxyModel
->setFilterRegExp
(QRegExp(s, Qt
::CaseInsensitive,
QRegExp::RegExp));
}
private:
QList<QString> names;
};
for (int i = 0; i < 5; i++)
qSort(names.begin(), names.end(), caseInsensitiveLessThan);
model->setStringList(names);
proxyModel->setSourceModel(model);
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer
->setModelSorting
(QCompleter::CaseInsensitivelySortedModel);
label
= new QLabel(tr
("...:"),
this);
lineEdit->setCompleter(completer);
label->setBuddy(lineEdit);
findButton->setDefault(true);
connect(lineEdit,
SIGNAL(textEdited
(const QString &)),
this,
SLOT(filterRegExpChanged
(const QString &)));
mainLayout->addWidget(label);
mainLayout->addWidget(lineEdit);
mainLayout->addWidget(findButton, 0, Qt::AlignRight);
setLayout(mainLayout);
setWindowTitle(tr("Find"));
}
#include "main.moc"
int main(int argc, char **argv){
FindDialog *dialog = new FindDialog(0);
dialog->show();
return app.exec();
}
#include <QtGui>
bool caseInsensitiveLessThan(const QString &s1, const QString &s2) {
return s1.toLower() < s2.toLower();
}
class FindDialog : public QDialog
{
Q_OBJECT
public:
FindDialog(QWidget *parent = 0);
QString get_item() const { return lineEdit->text(); }
void clear() { lineEdit->setText(""); }
private slots:
void filterRegExpChanged(const QString &s) {
proxyModel->setFilterRegExp(QRegExp(s, Qt::CaseInsensitive, QRegExp::RegExp));
}
private:
QSortFilterProxyModel *proxyModel;
QStringListModel *model;
QList<QString> names;
QLabel *label;
QLineEdit *lineEdit;
QCompleter *completer;
QPushButton *findButton;
};
FindDialog::FindDialog(QWidget *parent) : QDialog(parent) {
for (int i = 0; i < 5; i++)
names << QString::number(i) + QString(" ") +
QString::number(i + 1) + QString(" ") +
QString::number(i + 2);
qSort(names.begin(), names.end(), caseInsensitiveLessThan);
model = new QStringListModel(this);
model->setStringList(names);
proxyModel = new QSortFilterProxyModel(this);
proxyModel->setSourceModel(model);
proxyModel->setSortCaseSensitivity(Qt::CaseInsensitive);
proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
completer = new QCompleter(proxyModel, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel);
label = new QLabel(tr("...:"), this);
lineEdit = new QLineEdit(this);
lineEdit->setCompleter(completer);
label->setBuddy(lineEdit);
findButton = new QPushButton(tr("&Find"),this);
findButton->setDefault(true);
connect(lineEdit, SIGNAL(textEdited(const QString &)), this, SLOT(filterRegExpChanged(const QString &)));
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->addWidget(label);
mainLayout->addWidget(lineEdit);
mainLayout->addWidget(findButton, 0, Qt::AlignRight);
setLayout(mainLayout);
setWindowTitle(tr("Find"));
}
#include "main.moc"
int main(int argc, char **argv){
QApplication app(argc, argv);
FindDialog *dialog = new FindDialog(0);
dialog->show();
return app.exec();
}
To copy to clipboard, switch view to plain text mode
Bookmarks