3Фев/120
Слот. Поиск по QTreeWidget. Еще вариант.
Ищет по листьям. По первому столбцу.
Если дерево одноуровневое, то проверку на childCount можно убрать.
void MyClass::find(QString aFindString) { QTreeWidgetItemIterator it(myTree); while (*it) { if (!(*it)->text(0).contains(aFindString, Qt::CaseInsensitive) && ((*it)->childCount() == 0)) { (*it)->setHidden(true); } else { (*it)->setHidden(false); } ++it; } }
Коннект идентичен.
QLineEdit *findEdit = new QLineEdit(this); connect(findEdit,SIGNAL(textEdited(QString)),this,SLOT(find(QString)));
Должно работать гораздо быстрее первого варианта :)
27Янв/120
Слот. Поиск по QTreeWidget.
Поиск работает только в одноуровневом дереве по первому столбцу.
void MyClass::find(QString aFindString) { int childCount = tree->invisibleRootItem()->childCount(); if(aString != "") { QList <QTreeWidgetItem *> findList = tree->findItems(aFindString, Qt::MatchContains, 0); for(int i = 0; i < childCount; i++) { tree->invisibleRootItem()->child(i)->setHidden(true); } int findListSize = findList.size(); for(int j = 0; j < findListSize; j++) { findList.at(j)->setHidden(false); } } else { for(int i = 0; i < childCount; i++) { tree->invisibleRootItem()->child(i)->setHidden(false); } } }
Коннектим так:
QLineEdit *findEdit = new QLineEdit(this); connect(findEdit,SIGNAL(textEdited(QString)),this,SLOT(find(QString)));
19Июн/110
Qt. Получение списка сетевых интерфейсов.
QList<QNetworkInterface> getInterface() { //берем все интерфейсы, которые есть в системе QList<QNetworkInterface> networkInterfaces = QNetworkInterface::allInterfaces(); for(int i = 0; i < networkInterfaces.size(); i++) { QFlags<QNetworkInterface::InterfaceFlags> _flags = networkInterfaces.at(i).flags(); //если интерфейс выключен или если это вообще loopback if(!(QNetworkInterface::IsUp & _flags) || (QNetworkInterface::IsLoopBack & _flags)) { //то убираем его из списка networkInterfaces.removeAt(i); } } //возвращаем список работающих и активных интерфейсов return networkInterfaces; }
11Апр/110
QTableWidget. Запрет редактирования столбцов.
Проще всего делается через делегат.
class NonEditTableColumnDelegate : public QItemDelegate { Q_OBJECT public: NonEditTableColumnDelegate(QObject * parent = 0) : QItemDelegate(parent) {} virtual QWidget * createEditor ( QWidget *, const QStyleOptionViewItem &, const QModelIndex &) const { return 0; } };
Использование:
aTable = new QTableWidget(this); aTable->setColumnCount(3); //запрещаем редактирование первого столбца aTable->setItemDelegateForColumn(0, new NonEditTableColumnDelegate()); //запрещаем редактирование второго столбца aTable->setItemDelegateForColumn(1, new NonEditTableColumnDelegate()); //итого из трех столбцов редактироваться будет только последний