Как очистить qtablewidget
Перейти к содержимому

Как очистить qtablewidget

  • автор:

Как удалить строку в QtableWidget?

Всем привет! Ребят. подскажите пожалуйста. Не могу добиться удаления одной строки.Есть слот.

a = self.ui.raschetList.rowCount() for row in range(a): self.ui.raschetList.removeRow(row)

При этом удаляется половина строк. Я новичок в QT. что мне еще нужно передать слоту, чтоб делал то что мне нужно. Удалял выделенную строку. Так же хочу понять: что мне нужно использовать для передачи в строку запроса на удаления в БД MySql. Потому что, нужно, что бы эта строка удалялась и от туда. Уже многое перепробовал, но все равно не доходит. Заранее спасибо. Вот код из GUI. Чтоб было понятно, что такое rashetList.

self.raschetList = QtWidgets.QTableWidget(self.groupBox_4) self.raschetList.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) self.raschetList.setSelectionMode(QtWidgets.QAbstractItemView.SingleSelection) self.raschetList.setObjectName("raschetList") self.raschetList.setColumnCount(9)
  • Вопрос задан более двух лет назад
  • 1728 просмотров

Добавление данных в таблицу QTableWidget. Очистка таблицы

Необходимо организовать добавление данных в таблицу QTableWidget. Для начала расположим на форме виджет класса QTableWidget с именем tableWidget. Создадим в таблице пару колонок, назвав их, скажем, «Колонка 1» и «Колонка 2».

Предположим, что в объекте map типа QMap у нас хранятся некие данные, которые в определенный момент мы хотим разместить в табличке.

Прежде, чем организовать добавление данных в ячейки виджета, нужно их создать. Тогда, процесс заполнения таблицы будет выглядеть следующим образом:

[pastacode lang=»cpp» manual=»foreach(QString%20key%2C%20map.keys())%20%7B%0A%09qDebug()%20%3C%3C%20%22key%20%3D%20%22%20%3C%3C%20key%20%3C%3C%20%22value%20%3D%20%22%20%3C%3C%20map.value(key)%3B%0A%20%20%20%20ui-%3EtableWidget-%3EsetRowCount(ui-%3EtableWidget-%3ErowCount()%20%2B%201)%3B%0A%20%20%20%20QTableWidgetItem*%20item%20%3D%20new%20QTableWidgetItem%3B%0A%20%20%20%20item-%3EsetText(key)%3B%0A%20%20%20%20item-%3EsetTextAlignment(Qt%3A%3AAlignCenter)%3B%0A%20%20%20%20ui-%3EtableWidget-%3EsetItem(ui-%3EtableWidget-%3ErowCount()%20-%201%2C%200%2C%20item)%3B%0A%20%20%20%20QTableWidgetItem*%20item1%20%3D%20new%20QTableWidgetItem%3B%0A%20%20%20%20item1-%3EsetText(map.value(key))%3B%0A%20%20%20%20ui-%3EtableWidget-%3EsetItem(ui-%3EtableWidget-%3ErowCount()%20-%201%2C%201%2C%20item1)%3B%0A%7D» message=»» highlight=»» provider=»manual»/]

Данные будут отсортированы по ключу (именно такой сортировкой грешит QMap).

Подстроим размеры колонок под содержимое, прокрутим табличку вниз и спозиционируем курсор на последней записи:

[pastacode lang=»cpp» manual=»ui-%3EtableWidget-%3EresizeColumnsToContents()%3B%0Aui-%3EtableWidget-%3EscrollToBottom()%3B%0Aui-%3EtableWidget-%3EselectRow(ui-%3EtableWidget-%3ErowCount()-1)%3B» message=»» highlight=»» provider=»manual»/]

Чтобы очистить всю таблицу, включая заданные заголовки таблицы, воспользуемся следующим:

[pastacode lang=»cpp» manual=»ui-%3EtableWidget-%3Eclear()%3B» message=»» highlight=»» provider=»manual»/]

Тогда вместо названий колонок «Колонка 1» и «Колонка 2″ будут проставлены их номера по порядку.

Чтобы очистить таблицу, но оставить при этом названия колонок, напишем так:

[pastacode lang=»cpp» manual=»for%20(int%20i%20%3D%200%3B%20i%20%3C%20ui-%3EtableWidget-%3ErowCount()%3B%20%2B%2Bi)%0A%20%20%20%20%20%20%20%20ui-%3EtableWidget-%3EremoveRow(i)%3B%0Aui-%3EtableWidget-%3EsetRowCount(0)%3B» message=»» highlight=»» provider=»manual»/]

Чтобы узнать, как таблицу заполнить данными из SQL запроса, пройдите к другой записи: Добавление данных запроса в таблицу QTableWidget.

Поделиться ссылкой:

  • Послать ссылку другу по электронной почте (Открывается в новом окне)
  • Нажмите для печати (Открывается в новом окне)
  • Нажмите, чтобы поделиться в WhatsApp (Открывается в новом окне)
  • Нажмите, чтобы открыть на Facebook (Открывается в новом окне)
  • Нажмите, чтобы поделиться на Twitter (Открывается в новом окне)
  • Нажмите, чтобы поделиться записями на Pinterest (Открывается в новом окне)
  • Нажмите, чтобы поделиться в Telegram (Открывается в новом окне)
  • Нажмите, чтобы поделиться на LinkedIn (Открывается в новом окне)

QTableWidget: очистить активный item

Есть программа, на главном оке расположена таблица(QTableWidget). Каждый раз когда меняется содержимое ячейки происходит проверка на вводимые символы. И тут возникло два вопроса:
1) Как после ввода неправильных символов чистить данный item?
2) Как вернуть фокус на данную ячейку?

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Disable qtablewidget item
Добрый день. Подскажите как сделать неактивной в Qtablewidget строку при нажатии. Наподобие.

Ловим активный select и ставим, что он активный
есть select с двумя option.Задание — нужно сделать так чтобы по нажатию на один option с.

Access отчислить студента ( активный/ не активный )
Вот и добрались мы до истины, и заглохли. https://www.cyberforum.ru/ms-access/thread1706793.html.

QTableWidget (1) >>> QTableWidget (2) исключить повторяющиеся строки
Добрый день. Подскажите как лучше реализовать. Хочу реализовать исключение повторяющихся.

223 / 188 / 97
Регистрация: 15.04.2018
Сообщений: 718

Как вариант получать в слот изменения, проверять его (в данном случае использую регулярные выражения) и если что-то не так — делать действия (я вставил NaN)

p.s. сигнал: itemChanged(QTableWidgetItem *)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
//cpp file #include "testview.h" #include "ui_testview.h" TestView::TestView(QWidget *parent) : QMainWindow(parent), ui(new Ui::TestView) { ui->setupUi(this); } TestView::~TestView() { delete ui; } void TestView::on_tableWidget_itemChanged(QTableWidgetItem *item) { QString text = item->text(); QRegExp rx("^[0-9]+"); bool isCorrect = rx.exactMatch(text); if(!isCorrect) item->setText("NaN"); }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
//h file #ifndef TESTVIEW_H #define TESTVIEW_H #include #include namespace Ui { class TestView; } class TestView : public QMainWindow { Q_OBJECT public: explicit TestView(QWidget *parent = nullptr); ~TestView(); private slots: void on_tableWidget_itemChanged(QTableWidgetItem *item); private: Ui::TestView *ui; }; #endif // TESTVIEW_H

Как удалить строку QTableWidget

как сделать так чтобы в таблице пользователь выделял любой элемент в строке и при нажатии на кнопку удалялась вся строка, а в таблице tablewidget это было видно?

Отслеживать
9,637 9 9 золотых знаков 24 24 серебряных знака 35 35 бронзовых знаков
задан 9 ноя 2021 в 1:41
79 1 1 серебряный знак 6 6 бронзовых знаков
что значит «и в таблице tablewidget это было видно»
9 ноя 2021 в 5:22

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

# Слот нажатия кнопки def buttonClicked(self): row = self.tableWidget.currentRow() if row > -1: # Если есть выделенная строка/элемент self.tableWidget.removeRow(row) # Следующий вызов нужен для того, чтобы # сбросить индекс выбранной строки (чтобы currentRow установился в -1) self.tableWidget.selectionModel().clearCurrentIndex() 

Отслеживать
ответ дан 9 ноя 2021 в 6:09
Alexander Chernin Alexander Chernin
9,637 9 9 золотых знаков 24 24 серебряных знака 35 35 бронзовых знаков

  • python-3.x
  • qt
  • pyqt5
  • pyside2
    Важное на Мете
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *