Я понял суть проблемы с дебагером. Для вывода в дебаггер нужно выводить паттерн (а не то что я пытался вывести):
C++ (Qt)
qDebug() << rx.pattern();
Переработал немного класс и он выглядит так:
myregexp.h
C++ (Qt)
#ifndef MYREGEXP_H
#define MYREGEXP_H
#include <QtGui>
class MyRegExp : public QWidget
{
Q_OBJECT
public:
//Конструктор по-умолчанию
MyRegExp(QWidget *parent = 0);
//Деструктор
~MyRegExp();
public slots:
//Слот для проверки регулярного выражения
void chkRegExp(QString text);
private:
//18.05.10
QSortFilterProxyModel proxyModel; //Промежуточная модель
QStringList data; //Список данных
};
#endif // MYREGEXP_H
myregexp.cpp
C++ (Qt)
#include <QtGui>
#include "myregexp.h"
MyRegExp::MyRegExp(QWidget *parent):QWidget(parent)
{
QStringListModel* model = new QStringListModel;
data << "Aurora" << "Permanent" << "Shock" << "Behind the wall"
<< "Material" << "Anesthesia";
model->setStringList(data);
proxyModel.setSourceModel(model);
QListView* pListView1 = new QListView;
pListView1->setModel(model);
QListView* pListView2 = new QListView;
pListView2->setModel(&proxyModel);
QLabel* lbl = new QLabel("&Text:");
QLineEdit* txt = new QLineEdit;
lbl->setBuddy(txt);
//chkRegExp SLOT
connect(txt, SIGNAL(textChanged(QString)), this, SLOT(chkRegExp(QString)));
//Layout setup
QGridLayout* pgrdLayout = new QGridLayout;
pgrdLayout->addWidget(pListView1, 0, 0);
pgrdLayout->addWidget(pListView2, 0, 1);
pgrdLayout->addWidget(lbl, 1, 0);
pgrdLayout->addWidget(txt, 2, 0, 1, 2);
this->setLayout(pgrdLayout);
}
MyRegExp::~MyRegExp()
{
}
void MyRegExp::chkRegExp(QString text)
{
QRegExp rx(text + "*");
rx.setPatternSyntax(QRegExp::Wildcard);
//Сверка списка с регулярным выражением
QStringList::const_iterator constIterator;
for(constIterator = data.constBegin(); constIterator != data.constEnd(); ++constIterator)
{
QString temp = *constIterator; //Очередная строка из списка
if(rx.exactMatch(temp))
{//Вывести в proxyModel
//Суть вопроса//
}
}
}
Как из слота теперь выводить результат в proxyModel