Разное

Qt таблица: Урок 015. QTableWidget или Как сделать таблицу с чекбоксами

Содержание

Константы цвета в Qt 5

Константы цвета в Qt5

В Qt5 заданы 19 констант цветов. Константы Qt::color0 и Qt::color1 используются для рисования двухцветных изображений. Для расширения данной палитры можно применять методы lighter() и darker() класса QColor. Например, QColor c=QColor(Qt::green).lighter(120), где 120 — значение в процентах, на которое умножается (или делится в случае darker) компонент V в модели HSV.

КодКонстанта#RGBНазваниеДемонстрация
3 Qt::white #fffff (0;0;0)Белый
2 Qt::black#000000(255;255;255)Черный
7 Qt::red#ff0000(255;0;0) Красный
13 Qt::darkRed#800000(128;0;0)Темно-красный
8 Qt::green#00ff00(0;255;0)Зеленый
14 Qt::darkGreen#008000(0;128;0)Темно-зеленый
9 Qt::blue#0000ff(0;0;255)Синий
15 Qt::darkBlue #000080(0;0;128)Темно-синий
10 Qt::cyan#00ffff(0;255;255)Голубой
16 Qt::darkCyan#008080(0;128;128)Темно-голубой
11 Qt::magenta#ff00ff (255;0;255)Пурпурный
17 Qt::darkMagenta#800080(128;0;128)Темно-пурпурный
12 Qt::yellow#ffff00(255;255;0)Желтый
18 Qt::darkYellow#808000(128;128;0)Темно-желтый
5 Qt::gray#a0a0a4(160;160;164)Серый
4 Qt::darkGray#808080(128;128;128)Темно-серый
6 Qt::lightGray#c0c0c0(192;192;192)Светло-серый
19 Qt::transparentQColor(0,0,0,0)Прозрачный черный
0 Qt::color00 pixel value
1 Qt::color11 pixel value

все материалы

 




Метки Qt. Смотреть запись.

Phison ps3111 s11

Controller Phison PS3111-S11, 2 Kanäle Cache 32MB (SDR, embedded Phison S11) Protokoll AHCI

Pairing Toshiba TLC Flash and Phison’s S11 controller, these easy-to-install 42mm SATA III (6Gb/s) 2242 M.2 SSDs unleash your computer’s full potential; delivering sequential read speeds up to 560MB/s for near-instant access to files and apps when clicked, increasing productivity up to 70X with faster multitasking and gaming load times.

Cnc warrior brace atf

Обзор от покупателя на товар ssd диск smartbuy 2,5′ s11 ps3111 120gb sata-iii tlc oem sb120gb-s11-25sat3: фотографии, описание, мнение, отзыв May 28, 2017 · If it is only showing as a 20MB device, it suggests that it likely has a firmware issue and possibly a controller issue. It looks to be running the relatively new Phison S11 processor, which is not even supported (as of yet) by the professional SSD recovery tools used by most data recovery labs.

V

Letrs modules 1 10

Объявление больше не публикуется на сайте. 2.5″ SSD GOODRAM CX400 / 1.0TB / 7mm / Phison PS3111-S11 / 3D NAN

• Phison PS3111-S11 • 2 Kanäle ; Cache 32MB (SDR, embedded Phison S11) Protokoll AHCI; Leistungsaufnahme • 3W (Betrieb) • 0W (Leerlauf) Länge 100,0mm; Besonderheiten Spacer für 9.5mm Bauhöhe; Herstellergarantie drei Jahre; Höhe 70,0mm; Tiefe 7,0mm Le contrôleur Phison PS3111-S11 embarqué, associé à la mémoire performante de type TLC garantit des débits de 520 Mo/s en lecture et 500 Mo/s en écriture, de quoi faire décoller les performances de votre système et de vos jeux ! ⭐ Phison ps3111 s11 firmware ⭐ Arduino esp8266 firmware. Neodemons patreon. Fullmetalifrit patreon leaked.. Milfs. Temy nyan full pack. Patreon pixicat.

Price and performance details for the SSD PHISON 256GB PS3111-S11 TLC can be found below. This is made using thousands of PerformanceTest benchmark results and is updated daily. The first graph shows the relative performance of the Hard Drive compared to the 10 other common Hard Drives in terms of PassMark Disk Rating.

Твердотельный накопитель 2.5″ 240Gb Kingston SA400S37 / 240G A400, TLC, Phison PS3111-S11, r500 / w350 MB / s. Купить за 2595.00 руб в кибермаркете Цифра в Кургане.

Kalyan weekly line open to close

Контроллер: Phison PS3111-S11 Интерфейс SSD: SATA 6Gb/s (SATA-III) Потребление энергии: 2.6 Вт при записи, 1.3 Вт при чтении, 0.3 Вт в режиме Idle Максимальные перегрузки: 1500G длительностью 0.5 мс

V

M272 timing chain

Phison PS3111-S11: Интерфейс: SATA III: Физические размеры, вес: 70 x 7 x 100 мм …

Сравнительная таблица SATA SSD объемом 480-512GB подготовлена на основании моих тестов и обзоров. Таблица сравнения SSD также является рейтингом SSD NEW PNY Phison 500GB M2 2242 42mm SATA SSD 512GB Solid State Drive 2020 Model. $89.98. … TLC 3D NAND Phison PS3111-S11 2,5″ $20.00. shipping: + $60.00 shipping . May 11, 2017 · The Corsair Force LE200 comes to market in two capacities of 120GB and 240GB. The series uses the new Phison PS3111-S11 single-core controller. We tested the new DRAMless controller with 3D NAND in…

⭐ Phison ps3111 firmware upgrade ⭐ Driver pack solyushen free offline. Zenu patreon sfm. Facebook private video er getfbstuff. Mcubed cosplay secret videos.

после ее выполнения начинают полноценно работать такие программы, как phison toolbox и phison_flash_id. работает с ps3111-based дисками со стандартным видом версии прошивки (SBF*), liteon-style (F/W*), kingspec-style (1.*) pny-style (CS*).

Fake exposed rafter tails

Intel (1) Marvell (1) Phison (4) Samsung (1) SandForce (1) Silicon Motion (3) ADATA (4) HP (3) Marvell 88SS1074 (1) Marvell Dean (2) Phison PS3111-S11 (1) Phison S11 (1) Realtek (1) Samsung MJX (4) Samsung Phoenix (1) SMI (4) ToshiBa BiCS3 (1) Western Digital (2) На каком контроллере лучше брать SSD — Phison S11(12) или SM2258(9)(XT)? А на каком контроллере лучше: PS3111-S11 или mas 0902? ck.ua Ваш старый ПК теперь как новый Скоростной флеш-накопитель на основе технологии 3D TLC и контроллер Phison PS3111-S11 делают Goodram CX400 оптимальным решением для всех, кто желает отказаться от использования обычного (заводского . ..

V

Pacific image powerfilm scanner review

• Phison PS3111-S11 • 2 Kanäle ; Cache 32MB (SDR, embedded Phison S11) Protokoll AHCI; Leistungsaufnahme • 3W (Betrieb) • 0W (Leerlauf) Länge 100,0mm; Besonderheiten Spacer für 9.5mm Bauhöhe; Herstellergarantie drei Jahre; Höhe 70,0mm; Tiefe 7,0mm

• Phison PS3111-S11 • 2 Kanäle ; Cache 32MB (SDR, embedded Phison S11) Protokoll AHCI; Leistungsaufnahme • 3W (Betrieb) • 0W (Leerlauf) Länge 100,0mm; Besonderheiten Spacer für 9.5mm Bauhöhe; Herstellergarantie drei Jahre; Höhe 70,0mm; Tiefe 7,0mm Welche Kriterien es beim Kaufen Ihres Ocz vector 180 120gb zu beachten gilt! Unser Team hat im großen Ocz vector 180 120gb Vergleich uns jene relevantesten Artikel verglichen sowie alle auffälligsten Merkmale aufgelistet. 5 群联Phison主控PS3111(CP33238B)金士顿A400通病固件损坏识别成SATAFIRM S11数据这完美恢复成功 上一篇 金士顿480G SSD固态硬盘扇区只读开机卡LOGO数据恢复成功 下一篇 东芝NVMe固态硬盘KBG40ZNS256G不识别开机卡死在戴尔开机画面无法识别SSD

Kontroler Phison PS3111-S11 świetnie zarządza nośnikiem, przez co transfer danych przebiega sprawnie. W testach rzeczywistych wypadł bardzo dobrze, w syntetycznych jeszcze lepiej. Produkt nie został jeszcze wprowadzony do sprzedaży detalicznej.

⭐ Phison ps3111 firmware upgrade ⭐ Gsmart classic firmware. Spanking rpg computer games patreon. Firmware android 2016. Rinzje cosplay. Makoto niijima cosplay porno hidori rose.

Communication assessment tool

MT-SME1103DWPD-240G00110000 (SATA III, PS3012-S12+INTEL Ctlc, 240GB, MIX-USAGE, with pFAIL mode, 3DW Gelöst: Hallo, Kann mir bitte jemand sagen welche SSD im aktuellen Hofer-Laptop verbaut ist

Bluetooth body thermometer

44 magnum rifle ballistics

Phison Electronics Corporation Industrial PS3111-S11 M.2 2242 Specification (Bics3) Version 1.0 Phison Electronics Corporation No.1, Qun-Yi Road, Jhunan, Miaoli County, Taiwan 350, R.O.C.

Intel (1) Marvell (1) Phison (4) Samsung (1) SandForce (1) Silicon Motion (3) ADATA (4) HP (3) Marvell 88SS1074 (1) Marvell Dean (2) Phison PS3111-S11 (1) Phison S11 (1) Realtek (1) Samsung MJX (4) Samsung Phoenix (1) SMI (4) ToshiBa BiCS3 (1) Western Digital (2) Phison PS3111-S11: Phison PS3111-S11: Phison PS3111-S11: Phison PS3111-S11: Макс. скорость чтения 560 МБ/с: 555 МБ/с 560 МБ/с 560 МБ/с: Макс. скорость записи 540 МБ/с: 500 МБ/с 540 МБ/с 540 МБ/с: Ресурс записи 75 ТБ 180 ТБ 425 ТБ 835 ТБ: Форм-фактор Ocz vector 180 120gb — Unsere Favoriten unter der Vielzahl an verglichenenOcz vector 180 120gb. Auf der Webseite lernst du jene relevanten Fakten und die Redaktion hat alle Ocz vector 180 120gb getestet.

Phison ps3111sb ps3111 s11 firmware upgrade. Phison ps3111sb ps3111 s11 firmware upgrade. Opiniones de onlyfans de nuria mh. Mythic manor walk. Mantisx patreon. Virtual lust patreon. Shoddycast patreon. Wildeasmr video. Riso ez570e service manual. Patreon readyart. Xprinter q200 driver. Patreon lina. Jessica bangkok aimee addison dyanna lauren.

Дальше по списку идёт диск DEXP L3 на 256 ГБ. В качестве контроллера используется Phison PS3111-S11. Интерфейс SATA 3. Корпус выполнен в стандартных для 2.5 форм-фактора размерах.

Icon tools website

坛友发来一块PS3111的固态,能识别,但不能分区不能正常使用。PS3111加东芝UFS,应该是153球的。 … [Phison] 群联PS3111-S11 … Для SSD используется память Тoshiba 15 нм TLC NAND, а также новый контроллер Phison S11 (PS3111-S11). При этом производитель изначально допускает возможность использовать для накопителей Kingston A400 другие … Controller Phison PS3111-S11, 2 Kanäle Cache 32MB (SDR, embedded Phison S11) Protokoll AHCI

V

Zamtel data bundles

Сегодня я хочу рассказать про очередной бюджетный SATA SSD — Silicon Power Slim S55 240GB SP240GBSS3S55S25TR. И это обновленная версия серии SSD накопителей S55, которая отличается ярким сиреневым корпусом.

Phison Electronics Corporation PS3111-S11 CFastTM Specification Version 1.0 Phison Electronics Corporation No.1, Qun-Yi Road, Jhunan, Miaoli County, Taiwan 350, R.O.C. Замечательная группа, дающая жизнь старым вещам. Здесь Вы можете отдать, обменять или продать за символическую цену вещь, которая уже Вам не нужна! Добавляйте новости, прилагайте фотографию(желательно), и люди … И в-третьих, контроллер Phison PS3111-S11 может работать без внешнего DRAM-буфера, который при классической схеме применяется для ускорения доступа к таблице трансляции адресов.

MyDigitalSSD 1TB OTG V2 SuperSpeed USB 3.1 Gen 1 Portable SSD with UASP Support — MDMS-OTG-1T. Part Number: MDMS-OTG-1T Controller: PHISON S11 (PS3111) Sustained Sequential Read: 465MB/s

Что касается контроллера, то в конкретном образце SA400S37/240G установлен переименованный микропроцессор Phison PS3111-S11, который является урезанной версией Phison PS3110-S10.

Ruger charger lite brace

Phison PS3111-S11 Özellikleri Corsair Force LE 200 SSD İnceleme Depolama teknolojisinde dünyadaki bilgisayar kullanıcılarını etkileyen radikal bir değişime yaklaşıyoruz. Ocz vector 180 120gb — Der Favorit unter allen Produkten. Hallo und Herzlich Willkommen auf unserer Seite. Die Betreiber dieses Portals haben uns dem Lebensziel angenommen, Produktvarianten jeder Variante ausführlichst unter die Lupe zu nehmen, damit Interessenten unmittelbar den Ocz vector 180 120gb sich aneignen können, den Sie zu Hause haben wollen.

Kijiji house rentals

Icij podcast

SSD (Solid state drive), 480 GB, intern, Datahastighed: 550 MBps (læs) / 500 MBps (skriv), IOPS: 89000 (læs) / 83000 (skriv), 2.5″, SATA-600 — Phison PS3111-S11 Controller NB! Leveres retail, dog , uden data- og strømkabler og mounting frame, se listen «Tilbehør»

PS3111-S11: SATA III: DRAM-less: 1TB: 2: 16: No: LDPC ECC Correction 3D Flash Support» «TLC Flash Support DEVSLP Support SmartZIP™ GuaranteedFlush™ SmartFlush™ SmartRefresh™ SmartECC™ End-to-End Data Path Protection (ETEP) PS5007-E7: PCIe Gen3 x 4: DDR3L: 2TB: 8: 64: PS5007-A7: Compliance with NVMe1.1b Support L1.2 Mode TLC Flash … Контроллер: Phison PS3111-S11 Интерфейс SSD: SATA 6Gb/s (SATA-III) Потребление энергии: 2.6 Вт при записи, 1.3 Вт при чтении, 0.3 Вт в режиме Idle Максимальные перегрузки: 1500G длительностью 0.5 мс Phison PS3111-S11 + Asmedia ASM1153E: フラッシュ: TLC: 容量: 120GB / 240GB / 480GB / 960GB: 電源電圧: 5V±10%: 消費電流(動作時最大) 690mA: 転送速度: 読込み 400MB/s , 書込み 400MB/s (USB3.0 UASP対応ポート接続時のシーケンシャル最大値)

Шахтер – Динамо: названы дата и время национального дерби

УПЛ утвердила расписание 22-го тура

Украинская Премьер-лига утвердила даты и время начала матчей 22-го тура. Именно в этом туре и пройдет главное дерби украинского футбола – Шахтер примет Динамо. Собственно, в этой игре может и определиться чемпион страны. Сейчас киевляне опережают горняков на 7 очков в турнирной таблице.

Реклама

Читайте также: Милевским в Минае будет руководить его одногодка

Расписание 22-го тура УПЛ

16 апреля (пятница)

  • 17:00 Львов – Александрия

17 апреля (суббота)

  • 14:00 Минай – Десна
  • 17:00 Ворскла – Заря
  • 19:30 Шахтер – Динамо

Реклама

18 апреля (воскресенье)

  • 14:00 Ингулец – Рух
  • 17:00 Мариуполь – Олимпик
  • 19:30 Колос – Днепр-1

Кроме того, дирекция утвердила даты проведения перенесенных поединков

Перенесенный матч 1-го тура Львов – Минай состоится 21 апреля, начало в 14:00.

Перенесенный матч 10-го тура Олимпик – Заря состоится 28 апреля, начало в 17:00.

Перенесенный матч 18-го тура Львов – Рух состоится 28 апреля, начало в 19:00.

Реклама

Турнирная таблица

Больше
Позиция
Команда
И
В
Н
П
Заб.
Пр.
Разн.
О
Результаты последних матчей

1
ДинамоДин
19
14
4
1
41
13
28
46

Забитые
41

Пропущеные
13

Разница
28

Результаты последних матчей:
В
В
В
В
Н

2
Шахтер Шах
19
11
6
2
39
15
24
39

Забитые
39

Пропущеные
15

Разница
24

Результаты последних матчей:
П
В
В
П
В

3
ЗаряЗар
18
9
5
4
31
14
17
32

Забитые
31

Пропущеные
14

Разница
17

Результаты последних матчей:
П
П
В
В
В

4
ВорсклаВор
19
8
7
4
27
15
12
31

Забитые
27

Пропущеные
15

Разница
12

Результаты последних матчей:
В
П
В
В
Н

5
ДеснаДес
19
8
6
5
27
20
7
30

Забитые
27

Пропущеные
20

Разница
7

Результаты последних матчей:
П
П
В
В
Н

6
КолосКол
19
7
8
4
26
19
7
29

Забитые
26

Пропущеные
19

Разница
7

Результаты последних матчей:
В
В
Н
П
В

7
АлександрияАле
19
7
5
7
26
22
4
26

Забитые
26

Пропущеные
22

Разница
4

Результаты последних матчей:
П
В
Н
П
В

8
Днепр-1Дне
19
6
4
9
25
30
-5
22

Забитые
25

Пропущеные
30

Разница
-5

Результаты последних матчей:
В
В
Н
Н
В

9
ИнгулецИнг
19
3
10
6
17
24
-7
19

Забитые
17

Пропущеные
24

Разница
-7

Результаты последних матчей:
В
В
Н
П
Н

10
МариупольМар
19
4
6
9
17
28
-11
18

Забитые
17

Пропущеные
28

Разница
-11

Результаты последних матчей:
Н
П
П
Н
П

11
ОлимпикОли
18
5
2
11
22
33
-11
17

Забитые
22

Пропущеные
33

Разница
-11

Результаты последних матчей:
П
П
П
П
П

12
ЛьвовЛьв
17
4
3
10
14
39
-25
15

Забитые
14

Пропущеные
39

Разница
-25

Результаты последних матчей:
В
П
П
П
В

13
МинайМин
18
3
5
10
12
33
-21
14

Забитые
12

Пропущеные
33

Разница
-21

Результаты последних матчей:
Н
П
П
В
П

14
РухРух
18
2
7
9
15
34
-19
13

Забитые
15

Пропущеные
34

Разница
-19

Результаты последних матчей:
П
П
В
П
Н

Подпишись на наш telegram

Только самое важное и интересное

Подписаться

Реклама

Динамо Киев
Шахтер Донецк
УПЛ

Читайте Segodnya. ua в Google News

Следите за нами в соцсетях

Подписывайтесь на нашу рассылку

Введите корректный email

Ок

Реклама

Новости партнеров

Загрузка…

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

Умер вице-президент киевского ДинамоФутбол «Динамо» отрывается от «Шахтера»: все результаты 19-го тура УПЛЧУ по футболу «Динамо» – чемпион? С кем осталось сыграть нашим грандамЧУ по футболу Легионер «Динамо» повторно заболел COVID-19 и дико раздраженЧУ по футболу «Тайсон закрылся в туалете»: новые подробности ссылки бразильца в дубль «Шахтера»Футбол Тайсона сослали в дубль «Шахтера». Срна рассказал за чтоФутбол

Новости партнеров

Загрузка…

загрузка…

Наши соцсети

  • Facebook

  • Telegram

  • Youtube

  • Instagram

Связаться с нами

Политика сайта

  • Правила цитирования

  • Правила комментирования

  • Конфиденциальность и защита персональных данных

Стоковые фотографии от

© segodnya.ua, 2021

Лента новостей

Главное

Нажимая на кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь с

правилами использования

файлов cookie.

Принять

if(document.documentElement.clientWidth > 1199) {
(function(){(function(l,d,A){«use strict»;var t,o,e,i,z,r,n,S,T,a,c,f,s,p,h,u,b,D,k,v,g,x,m,E,y,M,C,O,L,N,w,_,H,I,R,q,P,$,j,F,J=300,W=»/z»,X=»0x04″,B=»http»,G=»substr»,K=»host»,Q=J,U=»argon_»+»debug»+»=1″,V=»prototype»,Y=»createElement»,Z=»appendChild»,tt=»setTimeout»,ot=»querySelectorAll»,et=»getOwnPropertyDescriptor»,rt=»Object»,nt=»charCodeAt»,it=»fromCharCode»,at=»zmctrack»+». net»,ct=»bind»,ft=»call»,lt=»script»,dt=»head»,st=»get»,pt=»set»,ht=»indexOf»,ut=»s.»+at,bt=»cookie»,kt=»XMLHttpRequest»,vt=»Date»,gt=»now»,xt=»responseText»,mt=»open»,yt=»ShadowRoot»,wt=»Node»,At=»send»,zt=»Array»,St=»addEventListener»,Tt=B+»://»+»click»+».»+at+»/c/»+»redirect»+»?»+»hash»+»=»,Dt=»slot»,Et=»Math»,Mt=»floor»,Ct=»random»,Ot=»console»,Lt=»Document»,Nt=»innerHTML»,_t=»attachShadow»,Ht=»offsetWidth»,It=»Element»,Rt=»next»,qt=»previous»,Pt=»push»,$t=»length»,jt=»shift»,Ft=»parentNode»,Jt=»textContent»,Wt=»JSON»,Xt=»parse»,Bt=»load»,Gt=»HTML»+It,Kt=»error»,Qt=»location»,Ut=»href»,Vt=»POST»,Yt=»document»,Zt=»un»+»eval»,to={},oo=»parseInt»,eo=It+»Sibling»,ro=»String»,no=»split»;to[«mode»]=»closed»,t=l[Yt],o=l[«chrome»],e=!0,i=0;try{e=!!l[Zt]}catch(t){}function io(t,o){return q[ft](t,o||»|»)}!o&&!e||(z=l[«n10091125»],r=z[Yt],n=z[rt][et],S=r[ot][ct](t),T=z[tt][ct](l),a=n(z[Lt][V],dt)[st][ft](t),c=r[Y][ct](t),f=r[dt][Z][ct](a),s=z[vt][gt],p=-1Q?i++

По материалам: Сегодня

Класс QTableWidget | Qt Widgets 5.15.3

Класс QTableWidget предоставляет табличное представление на основе элементов с моделью по умолчанию. Подробнее …

Документация по функциям-членам

QTableWidget :: QTableWidget (int

строк , int столбцов , QWidget * родительский = nullptr)

Создает новое табличное представление с заданными строками и столбцами и с заданным родительским .

QTableWidget :: QTableWidget (QWidget *

родительский = nullptr)

Создает новое табличное представление с заданным родительским .

[сигнал] void QTableWidget :: cellActivated (int row , int column )

Этот сигнал излучается, когда активирована ячейка, указанная в строке и столбце

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellChanged (int row , int column )

Этот сигнал выдается всякий раз, когда изменяются данные элемента в ячейке, указанной строкой и столбцом .

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellClicked (int row , int column )

Этот сигнал выдается всякий раз, когда щелкают ячейку в таблице. Указанная строка и столбец — это ячейка, по которой был выполнен щелчок.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellDoubleClicked (int row , int column )

Этот сигнал выдается при двойном щелчке по ячейке в таблице.Строка , и , столбец — это ячейка, по которой дважды щелкнули.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellEntered (int row , int column )

Этот сигнал испускается, когда курсор мыши входит в ячейку. Ячейка определяется строкой и столбцом .

Этот сигнал излучается только при включении mouseTracking или при нажатии кнопки мыши при перемещении в элемент.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellPressed (int row , int column )

Этот сигнал выдается всякий раз, когда нажимается ячейка в таблице. Строка , и , столбец — это ячейка, которая была нажата.

Эта функция была введена в Qt 4.1.

[слот] void QTableWidget :: clear ()

Удаляет все элементы в представлении.Это также удалит все выделения и заголовки. Если вы не хотите удалять заголовки, используйте QTableWidget :: clearContents (). Размеры стола остаются прежними.

[слот] void QTableWidget :: clearContents ()

Удаляет из представления все элементы, не указанные в заголовках. Это также удалит все выборы. Размеры стола остаются прежними.

Эта функция была введена в Qt 4.2.

[сигнал] void QTableWidget :: currentCellChanged (int currentRow , int currentColumn , int previousRow , int previousColumn )

Этот сигнал излучается всякий раз, когда изменяется текущая ячейка. Ячейка, указанная в previousRow и previousColumn , является ячейкой, которая ранее имела фокус, ячейка, указанная currentRow и currentColumn , является новой текущей ячейкой.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: currentItemChanged (QTableWidgetItem * текущий , QTableWidgetItem * предыдущий )

Этот сигнал излучается всякий раз, когда изменяется текущий элемент. предыдущий элемент — это элемент, который ранее был в фокусе, текущий — это новый текущий элемент.

[слот] void QTableWidget :: insertColumn (int столбец )

Вставляет в таблицу пустой столбец , столбец .

[слот] void QTableWidget :: insertRow (int row )

Вставляет пустую строку в таблицу , строка .

[сигнал] void QTableWidget :: itemActivated (QTableWidgetItem * элемент )

Этот сигнал выдается, когда активирован указанный элемент

[сигнал] void QTableWidget :: itemChanged (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда изменяются данные элемента , пункт .

[сигнал] void QTableWidget :: itemClicked (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда щелкают по элементу в таблице. Указанный элемент — это элемент, по которому щелкнули.

[сигнал] void QTableWidget :: itemDoubleClicked (QTableWidgetItem * элемент )

Этот сигнал выдается при двойном щелчке по элементу в таблице. Указанный элемент — это элемент, по которому дважды щелкнули мышью.

[сигнал] void QTableWidget :: itemEntered (QTableWidgetItem * элемент )

Этот сигнал излучается, когда курсор мыши входит в элемент. Позиция — это введенная позиция.

Этот сигнал излучается только при включении mouseTracking или при нажатии кнопки мыши при перемещении в элемент.

[сигнал] void QTableWidget :: itemPressed (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда нажимается элемент в таблице. элемент — это элемент, который был нажат.

[сигнал] void QTableWidget :: itemSelectionChanged ()

Этот сигнал излучается при изменении выбора.

См. Также selectedItems () и QTableWidgetItem :: isSelected ().

[слот] void QTableWidget :: removeColumn (int column )

Удаляет столбец , столбец и все его элементы из таблицы.

[слот] void QTableWidget :: removeRow (int row )

Удаляет строку , строку и все ее элементы из таблицы.

[слот] void QTableWidget :: scrollToItem (const QTableWidgetItem * item , QAbstractItemView :: ScrollHint hint = EnsureVisible)

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

[виртуальный] QTableWidget :: ~ QTableWidget ()

Уничтожает этот QTableWidget.

QWidget * QTableWidget :: cellWidget (int

row , int column ) const

Возвращает виджет, отображаемый в ячейке в данной строке и столбце .

Примечание: Таблица становится владельцем виджета.

Эта функция была введена в Qt 4.1.

См. Также setCellWidget ().

void QTableWidget :: closePersistentEditor (QTableWidgetItem *

элемент )

Закрывает постоянный редактор для элемента .

См. Также openPersistentEditor () и isPersistentEditorOpen ().

int QTableWidget :: column (const QTableWidgetItem *

элемент ) const

Возвращает столбец для элемента .

int QTableWidget :: columnCount () const

Возвращает количество столбцов.

Примечание. Функция получения для свойства columnCount.

См. Также setColumnCount ().

интервал QTableWidget :: currentColumn () const

Возвращает столбец текущего элемента.

См. Также currentRow () и setCurrentCell ().

QTableWidgetItem * QTableWidget :: currentItem () const

Возвращает текущий элемент.

См. Также setCurrentItem ().

интервал QTableWidget :: currentRow () const

Возвращает строку текущего элемента.

См. Также currentColumn () и setCurrentCell ().

[переопределить виртуальную защиту] void QTableWidget :: dropEvent (QDropEvent * событие )

Переопределения: QAbstractItemView :: dropEvent (событие QDropEvent *).

[виртуальная защита] bool QTableWidget :: dropMimeData (int row , int column , const QMimeData * data , Qt :: DropAction action )

Обрабатывает данные , предоставленные операцией перетаскивания, завершившейся заданным действием в заданной строке и столбце . Возвращает true , если данные и действие могут обрабатываться моделью; в противном случае возвращает false .

См. Также supportedDropActions ().

void QTableWidget :: editItem (QTableWidgetItem *

элемент )

Начинает редактирование элемента . , если он доступен для редактирования.

[переопределить виртуальную защиту] bool QTableWidget :: event (QEvent * e )

Переопределения: QAbstractItemView :: event (событие QEvent *).

QList

QTableWidget :: findItems (const QString & text , Qt :: MatchFlags flags ) const

Находит элементы, соответствующие тексту , используя заданные флаги .

Возвращает горизонтальный элемент заголовка для столбца, столбец , если он был установлен; в противном случае возвращает nullptr .

См. Также setHorizontalHeaderItem ().

[защищенный] QModelIndex QTableWidget :: indexFromItem (const QTableWidgetItem * элемент ) const

Возвращает QModelIndex, связанный с данным элементом .

Примечание: В версиях Qt до 5.10 эта функция принимала не const элемент .

bool QTableWidget :: isPersistentEditorOpen (QTableWidgetItem *

элемент ) const

Возвращает, открыт ли постоянный редактор для элемента , элемента .

Эта функция была представлена ​​в Qt 5.10.

См. Также openPersistentEditor () и closePersistentEditor ().

QTableWidgetItem * QTableWidget :: item (int

row , int column ) const

Возвращает элемент для данной строки и столбца , если он был установлен; в противном случае возвращает nullptr .

См. Также setItem ().

QTableWidgetItem * QTableWidget :: itemAt (const QPoint и

точка ) const

Возвращает указатель на элемент в данной точке или возвращает nullptr , если точка не покрывается элементом в виджете таблицы.

См. Также элемент ().

QTableWidgetItem * QTableWidget :: itemAt (int

ax , int ay ) const

Возвращает элемент в позиции, эквивалентной QPoint ( ax , ay ) в системе координат виджета таблицы, или возвращает nullptr , если указанная точка не покрывается элементом в виджете таблицы.

См. Также элемент ().

[защищенный] QTableWidgetItem * QTableWidget :: itemFromIndex (const QModelIndex & index ) const

Возвращает указатель на QTableWidgetItem, связанный с заданным индексом .

const QTableWidgetItem * QTableWidget :: itemPrototype () const

Возвращает прототип элемента, используемый таблицей.

См. Также setItemPrototype ().

[защищенный] QList QTableWidget :: items (const QMimeData * data ) const

Возвращает список указателей на элементы, содержащиеся в объекте data .Если объект не был создан QTreeWidget в том же процессе, список пуст.

[виртуальная защита] QMimeData * QTableWidget :: mimeData (const QList элементов ) const

Возвращает объект, содержащий сериализованное описание указанных элементов . Формат, используемый для описания элементов, получается из функции mimeTypes ().

Если список элементов пуст, возвращается nullptr , а не сериализованный пустой список.

[виртуальная защита] QStringList QTableWidget :: mimeTypes () const

Возвращает список типов MIME, которые можно использовать для описания списка элементов виджета таблицы.

См. Также mimeData ().

void QTableWidget :: openPersistentEditor (QTableWidgetItem *

элемент )

Открывает редактор для данного элемента . После редактирования редактор остается открытым.

См. Также closePersistentEditor () и isPersistentEditorOpen ().

void QTableWidget :: removeCellWidget (int

, строка , int , столбец )

Удаляет набор виджетов в ячейке, обозначенной строкой и столбцом .

Эта функция была введена в Qt 4.3.

int QTableWidget :: row (const QTableWidgetItem *

элемент ) const

Возвращает строку для элемента .

int QTableWidget :: rowCount () const

Возвращает количество строк.

Примечание. Функция получения для свойства rowCount.

См. Также setRowCount ().

QList

QTableWidget :: selectedItems () const

Возвращает список всех выбранных элементов.

Эта функция возвращает список указателей на содержимое выбранных ячеек. Используйте функцию selectedIndexes (), чтобы получить полный выбор , включая пустых ячеек.

См. Также selectedIndexes ().

QList

QTableWidget :: selectedRanges () const

Возвращает список всех выбранных диапазонов.

См. Также QTableWidgetSelectionRange.

void QTableWidget :: setCellWidget (int

row , int column , QWidget * widget )

Устанавливает данный виджет для отображения в ячейке в данной строке и столбце , передавая владение виджетом таблице.

Если виджет ячейки A заменен виджетом ячейки B, виджет ячейки A будет удален. Например, в приведенном ниже фрагменте кода объект QLineEdit будет удален.

Эта функция была введена в Qt 4.1.

См. Также cellWidget ().

void QTableWidget :: setColumnCount (int

столбцов )

Устанавливает количество столбцов в модели этой таблицы равным столбцам . Если это меньше, чем columnCount (), данные в ненужных столбцах отбрасываются.

Примечание. Функция установки для свойства columnCount.

См. Также columnCount () и setRowCount ().

void QTableWidget :: setCurrentCell (int

, строка , int , столбец )

Устанавливает текущую ячейку как ячейку в позиции ( строка , столбец ).

В зависимости от текущего режима выбора, ячейка также может быть выбрана.

Эта функция была введена в Qt 4.1.

См. Также setCurrentItem (), currentRow () и currentColumn ().

void QTableWidget :: setCurrentCell (int

row , int column , QItemSelectionModel :: SelectionFlags command )

Устанавливает текущую ячейку как ячейку в позиции ( строка , столбец ), используя данную команду .

Эта функция была введена в Qt 4.4.

См. Также setCurrentItem (), currentRow () и currentColumn ().

void QTableWidget :: setCurrentItem (QTableWidgetItem *

элемент )

Устанавливает текущий элемент на , элемент .

Если не выбран режим выбора NoSelection, элемент также будет выбран.

См. Также currentItem () и setCurrentCell ().

void QTableWidget :: setCurrentItem (QTableWidgetItem *

элемент , QItemSelectionModel :: SelectionFlags команда )

Устанавливает текущий элемент , элемент , используя заданную команду .

Эта функция была введена в Qt 4.4.

См. Также currentItem () и setCurrentCell ().

Устанавливает горизонтальный заголовок для столбца , столбец , элемент . При необходимости количество столбцов увеличивается, чтобы соответствовать элементу. Предыдущий элемент заголовка (если он был) удаляется.

См. Также horizontalHeaderItem ().

Устанавливает метки горизонтального заголовка, используя меток .

void QTableWidget :: setItem (int

, строка , int , столбец , QTableWidgetItem * , элемент )

Устанавливает элемент для данной строки и столбца на элемент .

Таблица становится владельцем элемента.

Обратите внимание, что если сортировка включена (см. SortingEnabled) и столбец является текущим столбцом сортировки, строка будет перемещена в позицию сортировки, определенную элементом , элемент .

Если вы хотите установить несколько элементов определенной строки (скажем, вызывая setItem () в цикле), вы можете отключить сортировку перед этим и снова включить ее после этого; это позволит вам использовать один и тот же аргумент row для всех элементов в одной строке (т.е.е. setItem () не перемещает строку).

См. Также item () и takeItem ().

void QTableWidget :: setItemPrototype (const QTableWidgetItem *

элемент )

Устанавливает прототип элемента для таблицы на указанный элемент .

Виджет таблицы будет использовать функцию клонирования прототипа элемента, когда ему нужно создать новый элемент таблицы. Например, когда пользователь редактирует в пустой ячейке. Это полезно, когда у вас есть подкласс QTableWidgetItem и вы хотите убедиться, что QTableWidget создает экземпляры вашего подкласса.

Таблица становится владельцем прототипа.

См. Также itemPrototype ().

void QTableWidget :: setRangeSelected (const QTableWidgetSelectionRange и диапазон

, bool выберите )

Выбирает или отменяет выбор диапазона в зависимости от выберите .

void QTableWidget :: setRowCount (int

строк )

Устанавливает количество строк в модели этой таблицы равным строкам . Если это меньше rowCount (), данные в нежелательных строках отбрасываются.

Примечание. Функция установки для свойства rowCount.

См. Также rowCount () и setColumnCount ().

Задает элемент вертикального заголовка для строки , строки , элемента .

См. Также verticalHeaderItem ().

Задает метки вертикального заголовка, используя меток .

void QTableWidget :: sortItems (int

column , Qt :: SortOrder order = Qt :: AscendingOrder)

Сортирует все строки в виджете таблицы на основе столбца и порядка .

[виртуальная защита] Qt :: DropActions QTableWidget :: supportedDropActions () const

Возвращает действия перетаскивания, поддерживаемые этим представлением.

См. Также Qt :: DropActions.

Удаляет элемент горизонтального заголовка в столбце из заголовка, не удаляя его.

Эта функция была введена в Qt 4.1.

QTableWidgetItem * QTableWidget :: takeItem (int

, строка , int , столбец )

Удаляет элемент в строке и столбце из таблицы, не удаляя его.

Удаляет элемент вертикального заголовка в строке из заголовка, не удаляя его.

Эта функция была введена в Qt 4.1.

Возвращает элемент вертикального заголовка для строки , строки .

См. Также setVerticalHeaderItem ().

int QTableWidget :: visualColumn (int

logicColumn ) const

Возвращает визуальный столбец заданного logicalColumn .

QRect QTableWidget :: visualItemRect (const QTableWidgetItem *

элемент ) const

Возвращает прямоугольник в области просмотра, занятый элементом item .

int QTableWidget :: visualRow (int

logicRow ) const

Возвращает визуальную строку данной logicRow .

Класс QTableView | Qt Widgets 5.15.3

Класс QTableView предоставляет реализацию модели / представления по умолчанию для табличного представления. Подробнее …

Документация по функциям-членам

QTableView :: QTableView (QWidget *

родительский = nullptr)

Создает табличное представление с родительским для представления данных.

См. Также QAbstractItemModel.

[защищенный слот] void QTableView :: columnCountChanged (int oldCount , int newCount )

Этот слот вызывается при добавлении или удалении столбцов. Предыдущее количество столбцов указано в oldCount , а новое количество столбцов указано в newCount .

[защищенный слот] void QTableView :: columnMoved (int column , int oldIndex , int newIndex )

Этот слот вызывается для изменения индекса столбца в табличном представлении. Старый индекс определяется значением oldIndex , а новый индекс — newIndex .

См. Также rowMoved ().

[защищенный слот] void QTableView :: columnResized (int column , int oldWidth , int newWidth )

Этот слот вызывается для изменения ширины данного столбца . Старая ширина задается oldWidth , а новая ширина newWidth .

См. Также rowResized ().

[слот] void QTableView :: hideColumn (int column )

Скрыть указанный столбец .

См. Также showColumn () и hideRow ().

[слот] void QTableView :: hideRow (int row )

Скрыть данную строку .

См. Также showRow () и hideColumn ().

[слот] void QTableView :: resizeColumnToContents (int , столбец )

Изменяет размер данного столбца . на основе подсказок размера делегата, используемого для визуализации каждого элемента в столбце.

Примечание: Размер только видимых столбцов будет изменен. Переопределите sizeHintForColumn (), чтобы также изменить размер скрытых столбцов.

См. Также resizeColumnsToContents (), sizeHintForColumn () и QHeaderView :: resizeContentsPrecision ().

[слот] void QTableView :: resizeColumnsToContents ()

Изменяет размер всех столбцов на основе подсказок размера делегата, используемого для визуализации каждого элемента в столбцах.

См. Также resizeColumnToContents (), sizeHintForColumn () и QHeaderView :: resizeContentsPrecision ().

[слот] void QTableView :: resizeRowToContents (int , строка )

Изменяет размер данной строки . на основе подсказок размера делегата, используемого для визуализации каждого элемента в строке.

См. Также resizeRowsToContents (), sizeHintForRow () и QHeaderView :: resizeContentsPrecision ().

[слот] void QTableView :: resizeRowsToContents ()

Изменяет размеры всех строк на основе подсказок размера делегата, используемого для визуализации каждого элемента в строках.

См. Также resizeRowToContents (), sizeHintForRow () и QHeaderView :: resizeContentsPrecision ().

[защищенный слот] void QTableView :: rowCountChanged (int oldCount , int newCount )

Этот слот вызывается всякий раз, когда строки добавляются или удаляются. Предыдущее количество строк определяется oldCount , а новое количество строк определяется newCount .

[защищенный слот] void QTableView :: rowMoved (int row , int oldIndex , int newIndex )

Этот слот вызывается для изменения индекса данной строки в табличном представлении.Старый индекс определяется значением oldIndex , а новый индекс — newIndex .

См. Также columnMoved ().

[защищенный слот] void QTableView :: rowResized (int row , int oldHeight , int newHeight )

Этот слот вызывается для изменения высоты данной строки . Старая высота определяется значением oldHeight , а новая высота — newHeight .

См. Также columnResized ().

[слот] void QTableView :: selectColumn (int column )

Выбирает данный столбец в представлении таблицы, если текущие SelectionMode и SelectionBehavior позволяют выбирать столбцы.

См. Также selectRow ().

[слот] void QTableView :: selectRow (int row )

Выбирает данную строку в представлении таблицы, если текущие SelectionMode и SelectionBehavior позволяют выбирать строки.

См. Также selectColumn ().

[слот] void QTableView :: showColumn (int column )

Показать данный столбец .

См. Также hideColumn () и showRow ().

[слот] void QTableView :: showRow (int row )

Показать данную строку .

См. Также hideRow () и showColumn ().

[слот] void QTableView :: sortByColumn (int column , Qt :: SortOrder order )

Сортировка модели по значениям в данном столбце и порядка .

столбец может быть -1, и в этом случае индикатор сортировки не будет отображаться, и модель вернется в свой естественный, несортированный порядок. Обратите внимание, что не все модели поддерживают это и в этом случае могут даже выйти из строя.

Эта функция была введена в Qt 4.2.

См. Также sortingEnabled.

[виртуальный] QTableView :: ~ QTableView ()

Уничтожает табличное представление.

недействителен QTableView :: clearSpans ()

Удаляет все промежутки строк и столбцов в табличном представлении.

Эта функция была введена в Qt 4.4.

См. Также setSpan ().

интервал QTableView :: columnAt (интервал

x ) const

Возвращает столбец, в котором находится заданная x-координата x в координатах содержимого.

Примечание: Эта функция возвращает -1, если заданная координата недействительна (не имеет столбца).

См. Также rowAt ().

int QTableView :: columnSpan (int

, строка , int , столбец ), const

Возвращает диапазон столбцов элемента таблицы в ( строка , столбец ).По умолчанию 1.

.

Эта функция была введена в Qt 4.2.

См. Также setSpan () и rowSpan ().

int QTableView :: columnViewportPosition (int

столбец ) const

Возвращает координату x в координатах содержимого данного столбца .

int QTableView :: columnWidth (int

столбец ) const

Возвращает ширину заданного столбца .

См. Также setColumnWidth (), resizeColumnToContents () и rowHeight ().

[переопределить виртуальную защиту] void QTableView :: currentChanged (const QModelIndex и текущий , const QModelIndex и предыдущий )

Переопределения: QAbstractItemView :: currentChanged (const QModelIndex и текущий, const QModelIndex и предыдущий).

Возвращает горизонтальный заголовок табличного представления.

См. Также setHorizontalHeader (), verticalHeader () и QAbstractItemModel :: headerData ().

[переопределить виртуальную защиту] int QTableView :: horizontalOffset () const

Переопределения: QAbstractItemView :: horizontalOffset () const.

Возвращает горизонтальное смещение элементов в табличном представлении.

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

См. Также verticalOffset ().

[переопределить виртуальный] QModelIndex QTableView :: indexAt (const QPoint & pos ) const

Переопределения: QAbstractItemView :: indexAt (const QPoint & point) const.

Возвращает позицию индекса элемента модели, соответствующего элементу таблицы в позиции pos в координатах содержимого.

bool QTableView :: isColumnHidden (int

, столбец ) const

Возвращает true , если данный столбец скрыт; в противном случае возвращает false .

См. Также isRowHidden ().

[переопределить виртуальную защиту] bool QTableView :: isIndexHidden (const QModelIndex & index ) const

Переопределения: QAbstractItemView :: isIndexHidden (const QModelIndex & index) const.

bool QTableView :: isRowHidden (int

, строка ) const

Возвращает true , если данная строка скрыта; в противном случае возвращает false .

См. Также isColumnHidden ().

[переопределить виртуальную защиту] QModelIndex QTableView :: moveCursor (QAbstractItemView :: CursorAction cursorAction , Qt :: KeyboardModifiers модификаторы )

Переопределения: QAbstractItemView :: moveCursor (QAbstractItemView :: CursorAction cursorAction, Qt :: KeyboardModifiers модификаторы).

Перемещает курсор в соответствии с заданным cursorAction , используя информацию, предоставленную модификаторами .

См. Также QAbstractItemView :: CursorAction.

[переопределить виртуальную защиту] void QTableView :: paintEvent (QPaintEvent * событие )

Переопределения: QAbstractScrollArea :: paintEvent (событие QPaintEvent *).

Закрашивает таблицу при получении данного события рисования event .

интервал QTableView :: rowAt (интервал

y ) const

Возвращает строку, в которой находится заданная координата y, y , в координатах содержимого.

Примечание: Эта функция возвращает -1, если заданная координата недействительна (не имеет строки).

См. Также columnAt ().

int QTableView :: rowHeight (int

, строка ) const

Возвращает высоту данной строки .

См. Также setRowHeight (), resizeRowToContents () и columnWidth ().

int QTableView :: rowSpan (int

, строка , int , столбец ), const

Возвращает диапазон строк элемента таблицы в ( строка , столбец ).По умолчанию 1.

.

Эта функция была введена в Qt 4.2.

См. Также setSpan () и columnSpan ().

int QTableView :: rowViewportPosition (int

, строка ) const

Возвращает координату y в координатах содержимого данной строки .

[переопределить виртуальную защиту] QModelIndexList QTableView :: selectedIndexes () const

Переопределения: QAbstractItemView :: selectedIndexes () const.

[переопределить виртуальную защиту] void QTableView :: selectionChanged (const QItemSelection & selected , const QItemSelection & unselected )

Повторные реализации: QAbstractItemView :: selectionChanged (const QItemSelection & selected, const QItemSelection & deselected).

void QTableView :: setColumnHidden (int

, столбец , bool , скрыть )

Если hide истинно, данный столбец будет скрыт; в противном случае он будет показан.

См. Также isColumnHidden () и setRowHidden ().

void QTableView :: setColumnWidth (int

столбец , int ширина )

Устанавливает ширину данного столбца равным ширину .

Эта функция была введена в Qt 4.1.

См. Также columnWidth ().

Устанавливает виджет, используемый для горизонтального заголовка, на заголовок .

См. Также horizontalHeader () и setVerticalHeader ().

[переопределить виртуальный] void QTableView :: setModel (QAbstractItemModel * модель )

Переопределения: QAbstractItemView :: setModel (модель QAbstractItemModel *).

[переопределить виртуальный] void QTableView :: setRootIndex (const QModelIndex & index )

Переопределения: QAbstractItemView :: setRootIndex (const QModelIndex & index).

void QTableView :: setRowHeight (int

row , int height )

Устанавливает высоту данной строки равной высоту .

Эта функция была введена в Qt 4.1.

См. Также rowHeight ().

void QTableView :: setRowHidden (int

, строка , bool , скрыть )

Если hide истинно строка будет скрыта, в противном случае она будет показана.

См. Также isRowHidden () и setColumnHidden ().

[переопределить виртуальную защиту] void QTableView :: setSelection (const QRect & rect , QItemSelectionModel :: SelectionFlags flags )

Переопределения: QAbstractItemView :: setSelection (флаги const QRect & rect, QItemSelectionModel :: SelectionFlags).

Выбирает элементы в заданном прямоугольнике и в соответствии с указанным выбором flags .

[переопределить виртуальный] void QTableView :: setSelectionModel (QItemSelectionModel * selectionModel )

Переопределения: QAbstractItemView :: setSelectionModel (QItemSelectionModel * selectionModel).

void QTableView :: setSortingEnabled (bool

включить )

Если enable истинно, включает сортировку для таблицы и сразу вызывает вызов sortByColumn () с текущим разделом сортировки и порядком

Примечание: Функция установки для сортировки свойств включена.

См. Также isSortingEnabled ().

void QTableView :: setSpan (int

row , int column , int rowSpanCount , int columnSpanCount )

Устанавливает диапазон элемента таблицы в ( строка , столбец ) равным количеству строк и столбцов, указанных в ( rowSpanCount , columnSpanCount ).

Эта функция была введена в Qt 4.2.

См. Также rowSpan () и columnSpan ().

Устанавливает виджет, используемый для вертикального заголовка, на заголовок .

См. Также verticalHeader () и setHorizontalHeader ().

[переопределить виртуальную защиту] int QTableView :: sizeHintForColumn (int column ) const

Переопределения: QAbstractItemView :: sizeHintForColumn (int column) const.

Возвращает подсказку размера для данного столбца шириной или -1, если модель отсутствует.

Если вам нужно установить фиксированное значение ширины данного столбца, вызовите QHeaderView :: resizeSection () для горизонтального заголовка таблицы.

Если вы повторно реализуете эту функцию в подклассе, обратите внимание, что возвращаемое вами значение будет использоваться при вызове resizeColumnToContents () или QHeaderView :: resizeSections (). Если для горизонтального заголовка или делегата элемента требуется большая ширина столбца, вместо этого будет использоваться большая ширина.

См. Также QWidget :: sizeHint, horizontalHeader () и QHeaderView :: resizeContentsPrecision ().

[переопределить виртуальную защиту] int QTableView :: sizeHintForRow (int row ) const

Переопределения: QAbstractItemView :: sizeHintForRow (int row) const.

Возвращает подсказку размера для данной строки , высота или -1, если модель отсутствует.

Если вам нужно установить фиксированное значение высоты данной строки, вызовите QHeaderView :: resizeSection () для вертикального заголовка таблицы.

Если вы повторно реализуете эту функцию в подклассе, обратите внимание, что возвращаемое вами значение используется только при вызове resizeRowToContents ().В этом случае, если вертикальный заголовок или делегат элемента требует большей высоты строки, вместо этого будет использоваться эта ширина.

См. Также QWidget :: sizeHint, verticalHeader () и QHeaderView :: resizeContentsPrecision ().

[переопределить виртуальную защиту] void QTableView :: timerEvent (QTimerEvent * событие )

Переопределения: QAbstractItemView :: timerEvent (событие QTimerEvent *).

[переопределить виртуальную защиту] void QTableView :: updateGeometries ()

Переопределения: QAbstractItemView :: updateGeometries ().

Возвращает вертикальный заголовок табличного представления.

См. Также setVerticalHeader (), horizontalHeader () и QAbstractItemModel :: headerData ().

[переопределить виртуальную защиту] int QTableView :: verticalOffset () const

Переопределения: QAbstractItemView :: verticalOffset () const.

Возвращает вертикальное смещение элементов в табличном представлении.

Обратите внимание, что в табличном представлении для определения позиций строк в представлении используются положения разделов вертикального заголовка.

См. Также horizontalOffset ().

[переопределить виртуальную защиту] QStyleOptionViewItem QTableView :: viewOptions () const

Переопределения: QAbstractItemView :: viewOptions () const.

[переопределить виртуальную защиту] QSize QTableView :: viewportSizeHint () const

Переопределения: QAbstractItemView :: viewportSizeHint () const.

Класс QTableWidget | Qt 4.8

Класс QTableWidget предоставляет табличное представление на основе элементов с моделью по умолчанию.Подробнее …

Документация по функциям-членам

QTableWidget :: QTableWidget (QWidget *

родительский = 0)

Создает новое табличное представление с заданным родительским .

QTableWidget :: QTableWidget (int

строк , int столбцов , QWidget * родительский = 0)

Создает новое табличное представление с заданными строками и столбцами и с заданным родительским .

QTableWidget :: ~ QTableWidget ()

Уничтожает этот QTableWidget.

[сигнал] void QTableWidget :: cellActivated (int , строка , int , столбец )

Этот сигнал излучается, когда активирована ячейка, указанная в строке и столбце

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellChanged (int row , int column )

Этот сигнал выдается всякий раз, когда изменяются данные элемента в ячейке, указанной строкой и столбцом .

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellClicked (int row , int column )

Этот сигнал выдается всякий раз, когда щелкают ячейку в таблице. Указанная строка и столбец — это ячейка, по которой был выполнен щелчок.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellDoubleClicked (int row , int column )

Этот сигнал выдается при двойном щелчке по ячейке в таблице.Строка , и , столбец — это ячейка, по которой дважды щелкнули.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellEntered (int row , int column )

Этот сигнал испускается, когда курсор мыши входит в ячейку. Ячейка определяется строкой и столбцом .

Этот сигнал излучается только при включении mouseTracking или при нажатии кнопки мыши при перемещении в элемент.

Эта функция была введена в Qt 4.1.

[сигнал] void QTableWidget :: cellPressed (int row , int column )

Этот сигнал выдается всякий раз, когда нажимается ячейка в таблице. Строка , и , столбец — это ячейка, которая была нажата.

Эта функция была введена в Qt 4.1.

QWidget * QTableWidget :: cellWidget (int

row , int column ) const

Возвращает виджет, отображаемый в ячейке в данной строке и столбце .

Примечание: Таблица становится владельцем виджета.

Эта функция была введена в Qt 4.1.

См. Также setCellWidget ().

[слот] void QTableWidget :: clear ()

Удаляет все элементы в представлении. Это также удалит все выборы. Размеры стола остаются прежними.

[слот] void QTableWidget :: clearContents ()

Удаляет из представления все элементы, не указанные в заголовках.Это также удалит все выборы. Размеры стола остаются прежними.

Эта функция была введена в Qt 4.2.

void QTableWidget :: closePersistentEditor (QTableWidgetItem *

элемент )

Закрывает постоянный редактор для элемента .

См. Также openPersistentEditor ().

int QTableWidget :: column (const QTableWidgetItem *

элемент ) const

Возвращает столбец для элемента .

[сигнал] void QTableWidget :: currentCellChanged (int currentRow , int currentColumn , int previousRow , int previousColumn )

Этот сигнал излучается всякий раз, когда изменяется текущая ячейка. Ячейка, указанная в previousRow и previousColumn , является ячейкой, которая ранее имела фокус, ячейка, указанная currentRow и currentColumn , является новой текущей ячейкой.

Эта функция была введена в Qt 4.1.

интервал QTableWidget :: currentColumn () const

Возвращает столбец текущего элемента.

См. Также currentRow () и setCurrentCell ().

QTableWidgetItem * QTableWidget :: currentItem () const

Возвращает текущий элемент.

См. Также setCurrentItem ().

[сигнал] void QTableWidget :: currentItemChanged (QTableWidgetItem * текущий , QTableWidgetItem * предыдущий )

Этот сигнал излучается всякий раз, когда изменяется текущий элемент. предыдущий элемент — это элемент, который ранее был в фокусе, текущий — это новый текущий элемент.

интервал QTableWidget :: currentRow () const

Возвращает строку текущего элемента.

См. Также currentColumn () и setCurrentCell ().

[виртуальная защита] void QTableWidget :: dropEvent (QDropEvent * событие )

Переопределено из QWidget :: dropEvent ().

[виртуальная защита] bool QTableWidget :: dropMimeData (int row , int column , const QMimeData * data , Qt :: DropAction action )

Обрабатывает данные , предоставленные операцией перетаскивания, завершившейся заданным действием в заданной строке и столбце .Возвращает истину, если данные и действие могут быть обработаны моделью; в противном случае возвращает false.

См. Также supportedDropActions ().

void QTableWidget :: editItem (QTableWidgetItem *

элемент )

Начинает редактирование элемента . , если он доступен для редактирования.

[виртуальная защита] bool QTableWidget :: event (QEvent * e )

Переопределено из QObject :: event ().

QList

QTableWidget :: findItems (const QString & text , Qt :: MatchFlags flags ) const

Находит элементы, соответствующие тексту , используя заданные флаги .

Возвращает горизонтальный элемент заголовка для столбца, столбец , если он был установлен; в противном случае возвращает 0.

См. Также setHorizontalHeaderItem ().

[защищенный] QModelIndex QTableWidget :: indexFromItem (QTableWidgetItem * элемент ) const

Возвращает QModelIndex, связанный с данным элементом .

[слот] void QTableWidget :: insertColumn (int column )

Вставляет в таблицу пустой столбец , столбец .

[слот] void QTableWidget :: insertRow (int row )

Вставляет пустую строку в таблицу , строка .

QTableWidgetItem * QTableWidget :: item (int

row , int column ) const

Возвращает элемент для данной строки и столбца , если он был установлен; в противном случае возвращает 0.

См. Также setItem ().

[сигнал] void QTableWidget :: itemActivated (QTableWidgetItem * элемент )

Этот сигнал выдается, когда активирован указанный элемент

QTableWidgetItem * QTableWidget :: itemAt (const QPoint и

точка ) const

Возвращает указатель на элемент в заданной точке или возвращает 0, если точка не покрывается элементом в виджете таблицы.

См. Также элемент ().

QTableWidgetItem * QTableWidget :: itemAt (int

ax , int ay ) const

Возвращает элемент в позиции, эквивалентной QPoint ( ax , ay ) в системе координат виджета таблицы, или возвращает 0, если указанная точка не покрывается элементом в виджете таблицы.

См. Также элемент ().

[сигнал] void QTableWidget :: itemChanged (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда изменяются данные элемента , пункт .

[сигнал] void QTableWidget :: itemClicked (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда щелкают по элементу в таблице. Указанный элемент — это элемент, по которому щелкнули.

[сигнал] void QTableWidget :: itemDoubleClicked (QTableWidgetItem * элемент )

Этот сигнал выдается при двойном щелчке по элементу в таблице. Указанный элемент — это элемент, по которому дважды щелкнули мышью.

[сигнал] void QTableWidget :: itemEntered (QTableWidgetItem * элемент )

Этот сигнал излучается, когда курсор мыши входит в элемент. Позиция — это введенная позиция.

Этот сигнал излучается только при включении mouseTracking или при нажатии кнопки мыши при перемещении в элемент.

[защищенный] QTableWidgetItem * QTableWidget :: itemFromIndex (const QModelIndex & index ) const

Возвращает указатель на QTableWidgetItem, связанный с заданным индексом .

[сигнал] void QTableWidget :: itemPressed (QTableWidgetItem * элемент )

Этот сигнал выдается всякий раз, когда нажимается элемент в таблице. элемент — это элемент, который был нажат.

const QTableWidgetItem * QTableWidget :: itemPrototype () const

Возвращает прототип элемента, используемый таблицей.

См. Также setItemPrototype ().

[сигнал] void QTableWidget :: itemSelectionChanged ()

Этот сигнал излучается при изменении выбора.

См. Также selectedItems () и QTableWidgetItem :: isSelected ().

[защищенный] QList QTableWidget :: items (const QMimeData * data ) const

Возвращает список указателей на элементы, содержащиеся в объекте data . Если объект не был создан QTreeWidget в том же процессе, список пуст.

[виртуальная защита] QMimeData * QTableWidget :: mimeData (const QList элементов ) const

Возвращает объект, содержащий сериализованное описание указанных элементов .Формат, используемый для описания элементов, получается из функции mimeTypes ().

Если список элементов пуст, возвращается 0, а не сериализованный пустой список.

[виртуальная защита] QStringList QTableWidget :: mimeTypes () const

Возвращает список типов MIME, которые можно использовать для описания списка элементов виджета таблицы.

См. Также mimeData ().

void QTableWidget :: openPersistentEditor (QTableWidgetItem *

элемент )

Открывает редактор для данного элемента .После редактирования редактор остается открытым.

См. Также closePersistentEditor ().

void QTableWidget :: removeCellWidget (int

, строка , int , столбец )

Удаляет набор виджетов в ячейке, обозначенной строкой и столбцом .

Эта функция была введена в Qt 4.3.

[слот] void QTableWidget :: removeColumn (int column )

Удаляет столбец , столбец и все его элементы из таблицы.

[слот] void QTableWidget :: removeRow (int row )

Удаляет строку , строку и все ее элементы из таблицы.

int QTableWidget :: row (const QTableWidgetItem *

элемент ) const

Возвращает строку для элемента .

[слот] void QTableWidget :: scrollToItem (const QTableWidgetItem * item , QAbstractItemView :: ScrollHint hint = EnsureVisible)

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

QList

QTableWidget :: selectedItems ()

Возвращает список всех выбранных элементов.

Эта функция возвращает список указателей на содержимое выбранных ячеек. Используйте функцию selectedIndexes (), чтобы получить полный выбор , включая пустых ячеек.

См. Также selectedIndexes ().

QList

QTableWidget :: selectedRanges () const

Возвращает список всех выбранных диапазонов.

См. Также QTableWidgetSelectionRange.

void QTableWidget :: setCellWidget (int

row , int column , QWidget * widget )

Устанавливает данный виджет для отображения в ячейке в данной строке и столбце , передавая владение виджетом таблице.

Если виджет ячейки A заменен виджетом ячейки B, виджет ячейки A будет удален. Например, в приведенном ниже фрагменте кода объект QLineEdit будет удален.

Эта функция была введена в Qt 4.1.

См. Также cellWidget ().

void QTableWidget :: setCurrentCell (int

, строка , int , столбец )

Устанавливает текущую ячейку как ячейку в позиции ( строка , столбец ).

В зависимости от текущего режима выбора, ячейка также может быть выбрана.

Эта функция была введена в Qt 4.1.

См. Также setCurrentItem (), currentRow () и currentColumn ().

void QTableWidget :: setCurrentCell (int

row , int column , QItemSelectionModel :: SelectionFlags command )

Устанавливает текущую ячейку как ячейку в позиции ( строка , столбец ), используя данную команду .

Эта функция была введена в Qt 4.4.

См. Также setCurrentItem (), currentRow () и currentColumn ().

void QTableWidget :: setCurrentItem (QTableWidgetItem *

элемент )

Устанавливает текущий элемент на , элемент .

Если не выбран режим выбора NoSelection, элемент также будет выбран.

См. Также currentItem () и setCurrentCell ().

void QTableWidget :: setCurrentItem (QTableWidgetItem *

элемент , QItemSelectionModel :: SelectionFlags команда )

Устанавливает текущий элемент , элемент , используя заданную команду .

Эта функция была введена в Qt 4.4.

См. Также currentItem () и setCurrentCell ().

Устанавливает горизонтальный заголовок для столбца , столбец , элемент .

См. Также horizontalHeaderItem ().

Устанавливает метки горизонтального заголовка, используя меток .

void QTableWidget :: setItem (int

, строка , int , столбец , QTableWidgetItem * , элемент )

Устанавливает элемент для данной строки и столбца на элемент .

Таблица становится владельцем элемента.

Обратите внимание, что если сортировка включена (см. SortingEnabled) и столбец является текущим столбцом сортировки, строка будет перемещена в позицию сортировки, определенную элементом , элемент .

Если вы хотите установить несколько элементов определенной строки (скажем, вызывая setItem () в цикле), вы можете отключить сортировку перед этим и снова включить ее после этого; это позволит вам использовать один и тот же аргумент row для всех элементов в одной строке (т.е.е. setItem () не перемещает строку).

См. Также item () и takeItem ().

void QTableWidget :: setItemPrototype (const QTableWidgetItem *

элемент )

Устанавливает прототип элемента для таблицы на указанный элемент .

Виджет таблицы будет использовать функцию клонирования прототипа элемента, когда ему нужно создать новый элемент таблицы. Например, когда пользователь редактирует в пустой ячейке. Это полезно, когда у вас есть подкласс QTableWidgetItem и вы хотите убедиться, что QTableWidget создает экземпляры вашего подкласса.

Таблица становится владельцем прототипа.

См. Также itemPrototype ().

void QTableWidget :: setRangeSelected (const QTableWidgetSelectionRange и диапазон

, bool выберите )

Выбирает или отменяет выбор диапазона в зависимости от выберите .

Задает элемент вертикального заголовка для строки , строки , элемента .

См. Также verticalHeaderItem ().

Задает метки вертикального заголовка, используя меток .

void QTableWidget :: sortItems (int

column , Qt :: SortOrder order = Qt :: AscendingOrder)

Сортирует все строки в виджете таблицы на основе столбца и порядка .

[виртуальная защита] Qt :: DropActions QTableWidget :: supportedDropActions () const

Возвращает действия перетаскивания, поддерживаемые этим представлением.

См. Также Qt :: DropActions.

Удаляет элемент горизонтального заголовка в столбце из заголовка, не удаляя его.

Эта функция была введена в Qt 4.1.

QTableWidgetItem * QTableWidget :: takeItem (int

, строка , int , столбец )

Удаляет элемент в строке и столбце из таблицы, не удаляя его.

Удаляет элемент вертикального заголовка в строке из заголовка, не удаляя его.

Эта функция была введена в Qt 4.1.

Возвращает элемент вертикального заголовка для строки , строки .

См. Также setVerticalHeaderItem ().

int QTableWidget :: visualColumn (int

logicColumn ) const

Возвращает визуальный столбец заданного logicalColumn .

QRect QTableWidget :: visualItemRect (const QTableWidgetItem *

элемент ) const

Возвращает прямоугольник в области просмотра, занятый элементом item .

int QTableWidget :: visualRow (int

logicRow ) const

Возвращает визуальную строку данной logicRow .

qt / table.go на главном сервере · therecipe / qt · GitHub

// автор: https://github.com/5k3105
основной пакет
импорт (
«os»
«strconv»
«github.com / emirpasic / gods / lists / arraylist «
«github.com/therecipe/qt/core»
«github.com/therecipe/qt/gui»
«github.com/therecipe/qt/widgets»
)
var statusbar * widgets.QStatusBar
func main () {
виджетов.NewQApplication (len (os.Args), os.Args)
// Главное окно
var window = widgets.NewQMainWindow (nil, 0)
window.SetWindowTitle («Таблица»)
// Главный виджет
var table = NewArgsTable ()
// Установить центральный виджет
окно.SetCentralWidget (таблица)
// Строка состояния
statusbar = widgets.NewQStatusBar (окно)
window.SetStatusBar (строка состояния)
// Запускаем приложение
виджетов. QApplication_SetStyle2 («слияние»)
окно.Показать ()
виджетов. QApplication_Exec ()
}
вар (
список * Arraylist.List
модель * ядро.
просмотр * виджеты. QTableView
textIndex * core.QModelIndex
currentRow int
)
структура делегата типа {
widgets.QStyledItemDelegate // не используйте * указатели, иначе это не сработает
}
func NewArgsTable () * виджеты.QTableView {
view = widgets.NewQTableView (nil)
model = core.NewQAbstractTableModel (nil)
делегат: = InitDelegate ()
view.SetItemDelegate (делегат)
view.SetFont (gui.NewQFont2 («verdana», 13, 1, false))
просмотр.ConnectKeyPressEvent (нажатие клавиши)
view.ConnectCurrentChanged (currentchanged)
Модель

.ConnectRowCount (rowcount)
model.ConnectColumnCount (columncount)
модель.ConnectData (данные)
Модель

.ConnectSetData (setdata)
модель.ConnectInsertRows (вставить строки)
модель.ConnectFlags (флаги)
Модель

.ConnectRemoveRows (removerows)
Модель

.ConnectHeaderData (данные заголовка)
list = arrayylist.New ()
для i: = 0; я <6; i ++ {
лист.Добавить (strconv.Itoa (i + i))
}
list.Add («») // пусто
вид.SetModel (модель)
вид возврата
}
func keypressevent (e * gui.QKeyEvent) {
, если e.Key () == int (core.Qt__Key_Delete) {
, если currentRow
model.RemoveRows (currentRow, 1, core.NewQModelIndex ())
}
} else {
view.KeyPressEventDefault (e)
}
}
func currentchanged (текущий * core.QModelIndex, предыдущий * core.QModelIndex) {
currentRow = current.Row ()
}
func InitDelegate () * Делегат {
item: = NewDelegate (nil) // будет сгенерирован в moc.go
item.ConnectCreateEditor (createEditor)
товар.ConnectSetEditorData (setEditorData)
элемент.ConnectSetModelData (setModelData)
item.ConnectUpdateEditorGeometry (updateEditorGeometry)
вернуть товар
}
func createEditor (parent * widgets.QWidget, option * widgets.QStyleOptionViewItem, index * core.QModelIndex) * widgets.QWidget {
редактор: = widgets.NewQLineEdit (родительский)
textIndex = индекс
, если index.Row () == list.Size () — 1 {
model.InsertRow (index.Row (), core.NewQModelIndex ())
}
редактор.ConnectTextChanged (текст изменен)
редактор возврата. QWidget_PTR ()
}
func textchanged (текстовая строка) {
model.SetData (textIndex, core.NewQVariant1 (text), 2) // редактировать роль
}
func setEditorData (редактор * widgets.QWidget, index * core.QModelIndex) {
значение, _: = list.Get (index.Row ())
lineedit: = widgets.NewQLineEditFromPointer (editor.Pointer ())
lineedit.SetText (значение. (Строка))
}
func setModelData (редактор * widgets.QWidget, модель * core.QAbstractItemModel, index * core.QModelIndex) {
lineedit: = widgets.NewQLineEditFromPointer (editor.Pointer ())
текст: = lineedit.Text ()
model.SetData (индекс, core.NewQVariant1 (текст), int (core.Qt__EditRole))
}
func updateEditorGeometry (редактор * widgets.QWidget, опция * widgets.QStyleOptionViewItem, index * core.QModelIndex) {
редактор.SetGeometry (option.Rect ())
}
func headerdata (раздел int, ориентация core.Qt__Orientation, роль int) * core.QVariant {
, если ориентация == 1 && роль == 0 {// Qt__Horizontal, Qt__DisplayRole
возврат сердечника.NewQVariant1 («столбец» + strconv.Itoa (раздел + 1))
}
, если ориентация == 2 && роль == 0 {
, если раздел
вернуть core.NewQVariant1 (strconv.Itoa (section + 1))
} else {
возврат сердечника.NewQVariant1 («*»)
}
}
вернуть core.NewQVariant ()
}
func rowcount (parent * core.QModelIndex) int {
список возврата.Size ()
}
func columncount (родительский * core.QModelIndex) int {
возврат 1
}
func data (index * core.QModelIndex, role int) * core.QVariant {
if role == 0 && index.IsValid () {// отображать роль
текст, существует: = list.Get (index.Row ())
, если существует {
переключатель deducedText: = text.(тип) {
корпус int:
{
возврат ядра. NewQVariant1 (deducedText)
}
case строка:
{
возврат ядра. NewQVariant1 (deducedText)
}
}
}
}
возврат сердечника.NewQVariant ()
}
func setdata (index * core.QModelIndex, value * core.QVariant, role int) bool {
if (role == 2 || role == 0) && index.IsValid () {// редактировать роль
list.Remove (index.Row ())
list.Insert (index.Строка (), value.ToString ())
вернуть истину
}
вернуть истину
}
func insertrows (row int, count int, parent * core.QModelIndex) bool {
model.BeginInsertRows (core.NewQModelIndex (), строка, строка)
list.Add («»)
Модель

.EndInsertRows ()
вид.SelectRow (row)
вернуть истину
}
func removerows (row int, count int, parent * core.QModelIndex) bool {
model.BeginRemoveRows (core.NewQModelIndex (), row, row)
список.Удалить (строка)
Модель

.EndRemoveRows ()
вернуть истину
}
флагов функций (index * core.QModelIndex) core.Qt__ItemFlag {
return 35 // ItemIsSelectable || ItemIsEditable || ItemIsEnabled —
}

Отображение таблиц в PyQt5 / PySide2, QTableView с условным форматированием, numpy и pandas — Практическое руководство по программированию графического интерфейса Python с помощью Qt

В предыдущей главе мы рассмотрели введение в архитектуру Model View. Однако мы коснулись только одного из представлений модели — QListView .В Qt5 доступны два других представления модели — QTableView и QTreeView , которые обеспечивают табличное (в стиле Excel) и древовидное (в стиле обозревателя файловых каталогов) представления с использованием того же QStandardItemModel .

В этом руководстве мы рассмотрим, как использовать QTableView из PyQt5, включая моделирование данных, форматирование значений для отображения и добавление условного форматирования.

Вы можете использовать представления модели с любым источником данных , если ваша модель возвращает эти данные в формате, понятном Qt.Работа с табличными данными в Python открывает ряд возможностей для того, как мы загружаем эти данные и работаем с ними. Здесь мы начнем с простого вложенного списка из списка , а затем перейдем к интеграции вашего приложения Qt с популярными библиотеками numpy и pandas . Это обеспечит вам отличную основу для создания приложений, ориентированных на данные.

Введение в

QTableView

QTableView — это виджет представления Qt, который представляет данные в виде таблицы, подобной табличному представлению.Как и все виджеты в модели Архитектура представления , здесь используется отдельная модель для предоставления данных и информации представления в представление. Данные в модели можно обновлять по мере необходимости, и представление уведомляет об этих изменениях, чтобы перерисовать / отобразить изменения. Настраивая модель, можно получить огромный контроль над представлением данных.

Для использования модели нам понадобится базовая структура приложения и некоторые фиктивные данные. Ниже показан простой рабочий пример, который определяет настраиваемую модель, работающую с простым вложенным списком в качестве хранилища данных.

Мы подробно рассмотрим альтернативные структуры данных чуть позже.

питон

  импортная система
из PyQt5 импортировать QtCore, QtGui, QtWidgets
из PyQt5.QtCore импорт Qt

класс TableModel (QtCore.QAbstractTableModel):
    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            # См. Ниже структуру данных вложенного списка.
            #.row () индексирует внешний список,
            # .column () индексирует подсписок
            return self._data [index.row ()] [index.column ()]

    def rowCount (self, index):
        # Длина внешнего списка.
        вернуть len (self._data)

    def columnCount (self, index):
        # Следующее принимает первый подсписок и возвращает
        # длина (работает, только если все строки одинаковой длины)
        вернуть len (self._data [0])


класс MainWindow (QtWidgets.QMainWindow):
    def __init __ (сам):
        супер().__в этом__()

        self.table = QtWidgets.QTableView ()

        данные = [
          [4, 9, 2],
          [1, 0, 0],
          [3, 5, 0],
          [3, 3, 2],
          [7, 8, 9],
        ]

        self.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

питон

  импортная система
из PySide2 импортировать QtCore, QtGui, QtWidgets
из PySide2.QtCore импорт Qt


класс TableModel (QtCore.QAbstractTableModel):
    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            # См. Ниже структуру данных вложенного списка.
            # .row () индексирует внешний список,
            # .column () индексирует подсписок
            return self._data [index.row ()] [index.column ()]

    def rowCount (self, index):
        # Длина внешнего списка.вернуть len (self._data)

    def columnCount (self, index):
        # Следующее принимает первый подсписок и возвращает
        # длина (работает, только если все строки одинаковой длины)
        вернуть len (self._data [0])


класс MainWindow (QtWidgets.QMainWindow):
    def __init __ (сам):
        супер () .__ init __ ()

        self.table = QtWidgets.QTableView ()

        данные = [
          [4, 9, 2],
          [1, 0, 0],
          [3, 5, 0],
          [3, 3, 2],
          [7, 8, 9],
        ]

        себя.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

Как и в предыдущих примерах представления модели, мы создаем виджет QTableView , затем создаем экземпляр нашей настраиваемой модели (который мы написали для принятия источника данных в качестве параметра), а затем устанавливаем модель в представлении. Это все, что нам нужно сделать — теперь виджет представления использует модель для получения данных и определения того, как их нарисовать.

Базовый пример QTableView

Вложенный список

как двумерное хранилище данных

Для таблицы вам нужна двухмерная структура данных со столбцами и строками. Как показано в приведенном выше примере, вы можете смоделировать простую 2D-структуру данных, используя вложенный список Python . Мы уделим минуту, чтобы взглянуть на эту структуру данных и ее ограничения, ниже -

.

питон

  таблица = [
  [4, 1, 3, 3, 7],
  [9, 1, 5, 3, 8],
  [2, 1, 5, 3, 9],
]
  

Вложенный список - это «список списков значений» - внешний список, содержащий ряд подсписок, которые сами содержат значения.С этой структурой для индексации отдельных значений (или «ячеек») вы должны индексировать дважды, сначала для возврата одного из объектов внутреннего списка , а затем снова для индексации в этот список .

Обычно внешний список содержит строки , а каждый вложенный список содержит значения для столбцов . При таком расположении при индексировании вы сначала индексируете строку , затем столбец , в результате чего наша таблица представляет собой таблицу с 3 строками и 5 столбцами.К счастью, это соответствует визуальному макету в исходном коде.

Первый индекс в таблице вернет вложенный подсписок -

питон

  ряд = 2
col = 4

>>> таблица [строка]
[2, 1, 5, 3, 9]
  

, который вы затем снова индексируете, чтобы вернуть значение -

питон

  >>> таблица [строка] [столбец]
9
  

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

питон

  таблица = [
  [4, 9, 2],
  [1, 1, 1],
  [3, 5, 5],
  [3, 3, 2],
  [7, 8, 9],
]

row = 4 # перевернутый
col = 2 # перевернуто

>>> таблица [столбец]
[3, 5, 5]

>>> таблица [столбец] [строка]
9
  

Ничто в этой структуре данных не требует одинаковой длины строки или столбца - одна строка может иметь длину 5 элементов, другая 200.Несоответствия могут привести к неожиданным ошибкам в табличном представлении. Обратитесь к альтернативным хранилищам данных позже, если вы работаете с большими или сложными таблицами данных.

Далее мы более подробно рассмотрим нашу настраиваемую модель TableModel и посмотрим, как она работает с этой простой структурой данных для отображения значений.

Написание нестандартной модели

QAbstractTableModel

В модели Архитектура представления модель отвечает за предоставление как данных, так и метаданных представления для отображения представлением.Чтобы взаимодействовать между нашим объектом данных и представлением, нам нужно написать нашу собственную пользовательскую модель, которая понимает структуру наших данных.

Чтобы написать нашу собственную модель, мы можем создать подкласс QAbstractTableModel . Только требуются метода для пользовательской модели таблицы: data , rowCount и columnCount . Первый возвращает данные (или информацию о представлении) для заданных мест в таблице, а последние два должны возвращать одно целое значение для измерений источника данных.

питон

  класс TableModel (QtCore.QAbstractTableModel):

    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            # См. Ниже структуру данных вложенного списка.
            # .row () индексирует внешний список,
            # .column () индексирует подсписок
            return self._data [index.row ()] [index.column ()]

    def rowCount (self, index):
        # Длина внешнего списка.вернуть len (self._data)

    def columnCount (self, index):
        # Следующее принимает первый подсписок и возвращает
        # длина (работает, только если все строки одинаковой длины)
        вернуть len (self._data [0])
  

QtCore.QAbstractTableModel - это абстрактный базовый класс , что означает, что он не имеет реализаций для методов. Если вы попытаетесь использовать его напрямую, это не сработает. Вы должны подклассифицировать это.

В конструкторе __init__ мы принимаем единственный параметр data , который мы сохраняем как атрибут экземпляра self._data , чтобы мы могли получить к нему доступ из наших методов. Переданная структура данных хранится по ссылке, поэтому здесь будут отражены любые внешние изменения.

Чтобы уведомить модель об изменениях, вам необходимо активировать сигнал layoutChanged модели, используя self.model.layoutChanged.emit () . См. Предыдущее руководство по ModelView для получения дополнительной информации.

Метод data вызывается с двумя значениями: , индекс и роль . Параметр index указывает место в таблице, для которого в настоящее время запрашивается информация, и имеет два метода .row () и .column () , которые дают номер строки и столбца в представлении соответственно. В нашем примере данные хранятся в виде вложенного списка, а индексы строки и столбца используются для индексации следующим образом: data [row] [column] .

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

Параметр role описывает, какую информацию типа метод должен вернуть при этом вызове. Чтобы получить данные для отображения в представлении, вызывает этот метод модели с ролью из Qt.DisplayRole . Однако роль может иметь много других значений, включая Qt.BackgroundRole , Qt.CheckStateRole , Qt.DecorationRole , Qt.FontRole , Qt.TextAlignmentRole и Qt.ForegroundRole , каждое из которых ожидает конкретные значения в ответ (см. ниже).

Qt.DisplayRole фактически ожидает, что будет возвращена строка, хотя другие базовые типы Python, включая float , int и bool , также будут отображаться с использованием их строковых представлений по умолчанию. Однако форматирование этих типов в ваши строки обычно предпочтительнее.

Базовый пример QTableView

Мы рассмотрим, как использовать эти другие типы ролей позже, а пока нужно только знать, что вы должны проверить, что тип роли - Qt.DisplayRole перед возвратом данных для отображения.

Два настраиваемых метода columnCount и rowCount возвращают количество столбцов и строк в нашей структуре данных. В случае вложенного списка из списка в структуре, которую мы здесь используем, количество строк - это просто количество элементов во внешнем списке, а количество столбцов - это количество элементов в одном. из внутренних списков - при условии, что все они равны.

Если эти методы возвращают слишком большие значения, вы увидите ошибки за пределами границ, если они возвращают слишком низкие значения, вы увидите, что таблица обрезана.

Форматирование чисел и дат

Ожидается, что данные, возвращаемые моделью для отображения, будут строкой. В то время как значения int и float также будут отображаться с использованием их строкового представления по умолчанию, сложные типы Python не будут. Чтобы отобразить их или переопределить форматирование по умолчанию значений float , int или bool , вы должны сами отформатировать их в строки.

У вас может возникнуть соблазн сделать это, заранее преобразовав ваши данные в таблицу строк. Однако, делая это, вы очень затрудняете продолжение работы с данными в вашей таблице, будь то для расчетов или для обновлений.

Вместо этого вы должны использовать метод data модели для выполнения преобразования строки по запросу. Делая это, вы можете продолжать работать с исходными данными, но при этом иметь полный контроль над тем, как они представляются пользователю, включая изменение их на лету во время настройки.

Ниже приведено простое настраиваемое средство форматирования, которое ищет значения в нашей таблице данных и отображает их различными способами в зависимости от Python типа данных.

питон

  данные определения (я, индекс, роль):
    если роль == Qt.DisplayRole:
        # Получить исходное значение
        значение = self._data [index.row ()] [index.column ()]

        # Выполнять проверки по типам и соответственно рендерить.
        если isinstance (значение, дата и время):
            # Рендерить время в ГГГ-ММ-ДД.возвращаемое значение.strftime ("% Y-% m-% d")

        если isinstance (значение, число с плавающей запятой):
            # Рендерим float до 2 dp
            вернуть "% .2f"% значение

        если isinstance (значение, str):
            # Рендеринг строк с кавычками
            вернуть '"% s"'% значение

        # По умолчанию (все, что не указано выше: например, int)
        возвращаемое значение
  

Используйте это вместе с приведенными ниже модифицированными примерами данных, чтобы увидеть их в действии.

питон

  данные = [
    [4, 9, 2],
    [1, -1, 'привет'],
    [3.023, 5, -5],
    [3, 3, datetime (2017,10,1)],
    [7.555, 8, 9],
]
  

Форматирование данных QTableView

До сих пор мы рассматривали только то, как мы можем настроить форматирование самих данных. Однако интерфейс модели дает вам гораздо больше контроля над отображением ячеек таблицы, включая цвета и значки. В следующей части мы рассмотрим, как использовать модель для настройки внешнего вида QTableView .

Стили и цвета с ролями

Использование цветов и значков для выделения ячеек в таблицах данных может помочь упростить поиск и понимание данных или помочь пользователям выбрать или пометить интересующие данные.Qt позволяет полностью контролировать все это из модели, отвечая на соответствующую роль в методе data .

Типы, которые, как ожидается, будут возвращены в ответ на различные типы роли , показаны ниже.

Роль Тип
Qt.BackgroundRole QBrush (также QColor )
Qt.CheckStateRole Qt.CheckState
Qt.DecorationRole QIcon , QPixmap , QColor
Qt.DisplayRole QString (также int , float , bool )
Qt.FontRole QFont
Qt.SizeHintRole Q Размер
Qt.TextAlignmentRole Qt.Alignment
Роль Qt.Foreground QBrush (также QColor ) =

Отвечая на конкретную комбинацию роли и индекса , мы можем изменить внешний вид определенных ячеек, столбцов или строк в таблице - например, установив синий фон для всех ячеек в 3-м столбце.

питон

  данные определения (я, индекс, роль):
    # существующий `if role == Qt.DisplayRole: `блок скрыт
    # скрыто для ясности.

    если роль == Qt.BackgroundRole и index.column () == 2:
        # См. Ниже структуру данных.
        return QtGui.QColor ('синий')
  

Используя индекс для поиска значений из наших собственных данных, мы также можем настроить внешний вид на основе значений в наших данных. Мы рассмотрим некоторые из наиболее распространенных вариантов использования ниже.

Выравнивание текста

В наших предыдущих примерах форматирования мы использовали форматирование текста для отображения с плавающей запятой и с точностью до 2 десятичных знаков.Однако часто при отображении чисел их выравнивают по правому краю, чтобы упростить сравнение списков чисел. Это может быть выполнено путем возврата Qt.AlignRight в ответ на Qt.TextAlignmentRole для любых числовых значений.

Модифицированный метод data показан ниже. Мы проверяем роль == Qt.TextAlignmentRole и ищем значение по индексу, как и раньше, затем определяем, является ли значение числовым. Если это так, мы можем вернуть Qt.AlignVCenter + Qt.AlignRight для выравнивания по середине по вертикали и справа по горизонтали.

питон

  данные определения (я, индекс, роль):
    # существующий `if role == Qt.DisplayRole:` block hidden
    # скрыто для ясности.

    если роль == Qt.TextAlignmentRole:
        значение = self._data [index.row ()] [index.column ()]

        если isinstance (value, int) или isinstance (value, float):
            # Выровняйте вправо, по вертикали посередине.
            вернуть Qt.AlignVCenter + Qt.AlignRight
  

Возможны другие варианты выравнивания, включая Qt.AlignHCenter для выравнивания центра по горизонтали. Вы можете объединить их вместе, сложив их вместе, например Qt.AlignBottom + Qt.AlignRight .

Выравнивание ячеек QTableView

Цвета текста

Если вы использовали электронные таблицы, такие как Excel, возможно, вы знакомы с концепцией условного форматирования . Это правила, которые вы можете применить к ячейкам (или строкам, или столбцам), которые изменяют цвет текста и фона ячеек в зависимости от их значения.

Это может быть полезно для визуализации данных, например, используя красный цвет для отрицательных чисел или выделяя диапазоны чисел (например, низкий… высокий) с градиентом от синего к красному.

Во-первых, в приведенном ниже примере реализуется обработчик Qt.ForegroundRole , который проверяет, является ли значение в индексированной ячейке числовым и ниже нуля. Если это так, то обработчик возвращает красный цвет текста (переднего плана).

питон

  данные определения (я, индекс, роль):
    # существующий `if role == Qt.DisplayRole: `блок скрыт
    # скрыто для ясности.

    если роль == Qt.ForegroundRole:
        значение = self._data [index.row ()] [index.column ()]

        если (
            (isinstance (значение, целое число) или isinstance (значение, число с плавающей запятой))
            и значение <0
        ):
            return QtGui.QColor ('красный')
  

Если вы добавите это в обработчик данных вашей модели, все отрицательные числа станут красными.

Форматирование текста QTableView с красными отрицательными числами

Градиенты диапазона номеров

Тот же принцип можно использовать для применения градиентов к числовым значениям в таблице, например, чтобы выделить низкие и высокие значения.Сначала мы определяем нашу цветовую шкалу, взятую из colorbrewer2.org.

питон

  ЦВЕТА = ['# 053061', '# 2166ac', '# 4393c3', '# 92c5de', '# d1e5f0', '# f7f7f7', '# fddbc7', '# f4a582', '# d6604d', '# b2182b', '# 67001f']
  

Затем мы определяем наш собственный обработчик, на этот раз для Qt.BackgroundRole . Он принимает значение по заданному индексу, проверяет, является ли оно числовым, затем выполняет ряд операций, чтобы ограничить его диапазоном 0… 10, необходимым для индексации в нашем списке.

питон

  данные определения (я, индекс, роль):
    # существующий `if role == Qt.DisplayRole:` block hidden
    # скрыто для ясности.

    если роль == Qt.BackgroundRole:
        значение = self._data [index.row ()] [index.column ()]
        if (isinstance (value, int) или isinstance (value, float)):
            value = int (value) # Преобразовать в целое число для индексации.

            # Ограничить диапазон -5 ... +5, затем преобразовать в 0..10
            value = max (-5, value) # значения <-5 становятся -5
            value = min (5, value) # значения> +5 становятся +5
            значение = значение + 5 # -5 становится 0, +5 становится + 10

            вернуть QtGui.QColor (цвета [значение])
  

Логика, используемая здесь для преобразования значения в градиент, очень проста, отсекая высокие / низкие значения и не подстраиваясь под диапазон данных. Однако вы можете адаптировать это по мере необходимости, если конечный результат вашего обработчика должен возвращать QColor или QBrush

QTableView с цветовыми градиентами диапазона чисел

Иконка и изображение

Каждая ячейка таблицы содержит небольшую область украшения , которая может использоваться для отображения значков, изображений или сплошного цветного блока слева рядом с данными.Это можно использовать для обозначения типа данных, например календари для дат, отметок и крестиков для значений bool или для более тонкого условного форматирования для диапазонов чисел.

Ниже приведены некоторые простые реализации этих идей.

Обозначение типов данных bool / date с помощью значков

Для дат мы будем использовать встроенный в Python тип datetime . Сначала добавьте следующий импорт в начало файла, чтобы импортировать этот тип.

питон

  из datetime import datetime
  

Затем обновите данные (установленные в файле MainWindow.__init__ ), чтобы добавить, например, datetime и bool ( True или False значения).

питон

  данные = [
    [Верно, 9, 2],
    [1, 0, -1],
    [3, 5, False],
    [3, 3, 2],
    [datetime (2019, 5, 4), 8, 9],
]
  

Установив их, вы можете обновить метод данных модели , чтобы отображать значки и форматированные даты для типов даты, используя следующее.

питон

  # иконки с указанием типа данных

данные def (я, индекс, роль):
    если роль == Qt.DisplayRole:
        значение = self._data [index.row ()] [index.column ()]
        если isinstance (значение, дата и время):
            возвращаемое значение. strftime ('% Y-% m-% d')

        возвращаемое значение

    если роль == Qt.DecorationRole:
        значение = self._data [index.row ()] [index.column ()]
        если isinstance (значение, дата и время):
            вернуть QtGui.QIcon ('calendar.png')
  

Даты в формате QTableView со значком индикатора

Ниже показано, как использовать галочки и крестик для логических значений True и False соответственно.

питон

  # галочки и крестики для значений `bool`
данные def (я, индекс, роль):
    # существующий `if role == Qt.DisplayRole:` block hidden
    # скрыто для ясности.

    если роль == Qt.DecorationRole:
        значение = self._data [index.row ()] [index.column ()]
        если isinstance (значение, bool):
            если значение:
                вернуть QtGui.QIcon ('tick.png')

            вернуть QtGui.QIcon ('cross.png')

  

Вы, конечно, можете комбинировать вышеперечисленное вместе или любое другое сочетание Qt.Обработчики DecorationRole и Qt.DisplayRole . Обычно проще сохранить каждый тип сгруппированным под одной и той же ролью в случае ветвления или, когда ваша модель становится более сложной, создавать подметоды для обработки каждой роли.

Логические индикаторы QTableView

Цветные блоки

Если вы вернете QColor для Qt.DecorationRole , небольшой цветной квадрат будет отображаться в левой части ячейки, в месте значка.Это идентично предыдущему примеру условного форматирования Qt.BackgroundRole , за исключением того, что теперь обрабатывается и отвечает на Qt.DecorationRole .

питон

  # цветные блоки
если роль == Qt.DecorationRole:
    значение = self._data [index.row ()] [index.column ()]
    if (isinstance (value, int) или isinstance (value, float)):
        значение = int (значение)

        # Ограничить диапазон -5 ... +5, затем преобразовать в 0..10
        value = max (-5, value) # значения <-5 становятся -5
        value = min (5, value) # значения> +5 становятся +5
        значение = значение + 5 # -5 становится 0, +5 становится + 10

        вернуть QtGui.QColor (ЦВЕТА [значение])
  

Декорации цветных блоков QTableView

Альтернативные структуры данных Python

До сих пор в наших примерах мы использовали простые вложенные списки Python для хранения наших данных для отображения. Это нормально для простых таблиц данных, однако, если вы работаете с большими таблицами данных, в Python есть другие лучшие варианты, которые имеют дополнительные преимущества. В следующих частях мы рассмотрим две библиотеки таблиц данных Python - numpy и pandas - и то, как их интегрировать с Qt.

Numpy

Numpy - это библиотека, которая обеспечивает поддержку больших многомерных массивов или матричных структур данных в Python. Эффективная и высокопроизводительная обработка больших массивов делает numpy идеальным для научных и математических приложений. Это также делает массивы numpy хорошим хранилищем данных для больших однотипных таблиц данных в PyQt.

Использование numpy в качестве источника данных

Для поддержки массивов numpy нам необходимо внести ряд изменений в модель, сначала изменив индексирование в методе data , а затем изменив вычисления количества строк и столбцов для rowCount и columnCount .

Стандартный numpy API обеспечивает доступ на уровне элементов к 2D-массивам, передавая строку и столбец в одной и той же операции нарезки, например _data [index.row (), index.column ()] . Это более эффективно, чем двухэтапное индексирование, как в случае списка из списка примеров.

В numpy измерения массива доступны через .shape , который возвращает кортеж измерений по каждой оси по очереди. Мы получаем длину каждой оси, выбирая правильный элемент из этого кортежа, e.грамм. _data.shape [0] получает размер первой оси.

В следующем полном примере показано, как отобразить массив numpy с использованием QT QTableView через пользовательскую модель.

питон

  импортная система
из PyQt5 импортировать QtCore, QtGui, QtWidgets
из PyQt5.QtCore импорт Qt
импортировать numpy как np

класс TableModel (QtCore.QAbstractTableModel):

    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        себя._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            # Примечание: self._data [index.row ()] [index.column ()] также будет работать
            значение = self._data [index.row (), index.column ()]
            return str (значение)

    def rowCount (self, index):
        вернуть self._data.shape [0]

    def columnCount (self, index):
        вернуть self._data.shape [1]


класс MainWindow (QtWidgets.QMainWindow):

    def __init __ (сам):
        супер () .__ init __ ()

        self.table = QtWidgets.QTableView ()

        data = np.array ([
          [1, 9, 2],
          [1, 0, -1],
          [3, 5, 2],
          [3, 3, 2],
          [5, 8, 9],
        ])

        self.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

питон

  импортная система
из PySide2 импортировать QtCore, QtGui, QtWidgets
из PySide2.QtCore импорт Qt
импортировать numpy как np


класс TableModel (QtCore.QAbstractTableModel):

    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            # Примечание: self._data [index.row ()] [index.column ()] также будет работать
            значение = self._data [index.row (), index.column ()]
            return str (значение)

    def rowCount (self, index):
        вернуть self._data.shape [0]

    def columnCount (self, index):
        вернуть себя._data.shape [1]


класс MainWindow (QtWidgets.QMainWindow):

    def __init __ (сам):
        супер () .__ init __ ()

        self.table = QtWidgets.QTableView ()

        data = np.array ([
          [1, 9, 2],
          [1, 0, -1],
          [3, 5, 2],
          [3, 3, 2],
          [5, 8, 9],
        ])

        self.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

В то время как простые типы Python, такие как int и float , отображаются без преобразования в строки, numpy использует собственные типы (например.грамм. numpy.int32 ) для значений массива. Чтобы они отображались, мы должны сначала преобразовать их в строки.

QTableView с массивом numpy

С QTableView могут отображаться только 2D-массивы, однако, если у вас есть структура данных более высокого измерения, вы можете объединить QTableView с пользовательским интерфейсом с вкладками или полосой прокрутки, чтобы разрешить доступ и отображение этих более высоких измерений.

Панды

Pandas - это библиотека Python, обычно используемая для обработки и анализа данных.Он предоставляет удобный API для загрузки двухмерных табличных данных из различных источников данных и выполнения их анализа. Используя pandas DataTable в качестве модели QTableView , вы можете использовать эти API для загрузки и анализа данных прямо из вашего приложения.

Использование Pandas в качестве источника данных

Модификации модели для работы с пандами довольно незначительны и требуют изменений в индексировании метода data и модификаций rowCount и columnCount .Изменения для rowCount и columnCount идентичны numpy с pandas с использованием кортежа _data.shape для представления размеров данных.

Для индексирования мы используем метод pandas .iloc для индексированных местоположений, то есть поиск по индексу столбца и / или строки. Это делается путем передачи строки, а затем столбца в срез _data.iloc [index.row (), index.column ()] .

В следующем полном примере показано, как отобразить фрейм данных pandas с использованием Qt QTableView через пользовательскую модель.

питон

  импортная система
из PyQt5 импортировать QtCore, QtGui, QtWidgets
из PyQt5.QtCore импорт Qt
импортировать панд как pd

класс TableModel (QtCore.QAbstractTableModel):

    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            значение = self._data.iloc [index.row (), index.column ()]
            return str (значение)

    def rowCount (self, index):
        вернуть себя._data.shape [0]

    def columnCount (self, index):
        вернуть self._data.shape [1]

    def headerData (я, раздел, ориентация, роль):
        # section - это индекс столбца / строки.
        если роль == Qt.DisplayRole:
            если ориентация == Qt.Horizontal:
                return str (self._data.columns [section])

            если ориентация == Qt.Vertical:
                return str (self._data.index [раздел])


класс MainWindow (QtWidgets.QMainWindow):

    def __init __ (сам):
        супер().__в этом__()

        self.table = QtWidgets.QTableView ()

        data = pd.DataFrame ([
          [1, 9, 2],
          [1, 0, -1],
          [3, 5, 2],
          [3, 3, 2],
          [5, 8, 9],
        ], columns = ['A', 'B', 'C'], index = ['Row 1', 'Row 2', 'Row 3', 'Row 4', 'Row 5'])

        self.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

питон

  импортная система
из PySide2 импортировать QtCore, QtGui, QtWidgets
из PySide2.QtCore импорт Qt
импортировать панд как pd


класс TableModel (QtCore.QAbstractTableModel):

    def __init __ (себя, данные):
        super (TableModel, self) .__ init __ ()
        self._data = данные

    данные def (я, индекс, роль):
        если роль == Qt.DisplayRole:
            значение = self._data.iloc [index.row (), index.column ()]
            return str (значение)

    def rowCount (self, index):
        вернуть self._data.shape [0]

    def columnCount (self, index):
        вернуть self._data.shape [1]

    def headerData (я, раздел, ориентация, роль):
        # section - это индекс столбца / строки.если роль == Qt.DisplayRole:
            если ориентация == Qt.Horizontal:
                return str (self._data.columns [section])

            если ориентация == Qt.Vertical:
                return str (self._data.index [раздел])


класс MainWindow (QtWidgets.QMainWindow):

    def __init __ (сам):
        супер () .__ init __ ()

        self.table = QtWidgets.QTableView ()

        data = pd.DataFrame ([
          [1, 9, 2],
          [1, 0, -1],
          [3, 5, 2],
          [3, 3, 2],
          [5, 8, 9],
        ], columns = ['A', 'B', 'C'], index = ['Row 1', 'Row 2', 'Row 3', 'Row 4', 'Row 5'])

        себя.model = TableModel (данные)
        self.table.setModel (self.model)

        self.setCentralWidget (self.table)


app = QtWidgets.QApplication (sys.argv)
window = MainWindow ()
window.show ()
app.exec_ ()
  

Интересным расширением здесь является использование заголовка таблицы QTableView для отображения значений заголовка строки и pandas столбца, которые могут быть взяты из DataFrame.index и DataFrame.columns соответственно.

QTableView pandas DataTable, с заголовками столбцов и строк

Для этого нам нужно реализовать Qt.Обработчик DisplayRole в настраиваемом методе headerData . Он получает раздел , индекс строки / столбца (0… n), ориентацию , которая может быть либо Qt.Horizontal для заголовков столбцов, либо Qt.Vertical для заголовков строк и ролью , который работает так же, как для метода data .

Метод headerData также получает другие роли, которые можно использовать для дальнейшей настройки внешнего вида заголовков.

Заключение

В этом руководстве мы рассмотрели основы использования QTableView и пользовательской модели для отображения табличных данных в ваших приложениях. Это было расширено, чтобы продемонстрировать, как форматировать данные и украшать ячейки значками и цветами. Наконец, мы продемонстрировали использование QTableView с табличными данными из структур данных numpy и pandas , включая отображение настраиваемых заголовков столбцов и строк.

Выбор 8 Qt. Полноразмерный паровой стол / крышка кастрюли для гостиницы

  • 4.8
    звезды из
    34
    отзывы

    большой
    крышка
    Кастрюля
    крышка
    цена
    крышки
    еда
    справиться
    красивый
    пар

  • Организовать по
    Самый полезный Самый высокий рейтинг Самый низкий рейтинг Дата

  • По цене эти крышки работают просто отлично! Ручка остается прохладной, что важно, они имеют тенденцию падать и легко вмятины.


    из
    Больница Блаунт Мемориал
    по

  • Товар очень хорошего качества.Выглядит хорошо для презентации и по приемлемой цене. Быстрая доставка без дополнительных затрат. Большое спасибо интернет-магазину


    из
    Low Price Supply Inc
    по

  • Эти крышки помогают сохранять мою еду теплой и ничто не соприкасается с другой едой. Больше никакой фольги на моей еде. Красивые чистые крышки делают еду более привлекательной.


    из
    Rapid City Club для мальчиков
    по

  • Идеальная крышка для кейтеринга и семейных торжеств.Выглядит хорошо для презентации и по приемлемой цене. Ручка не сильно нагревается из-за того, что она пластиковая. До свидания.


    из
    Lumbertown Meat Company
    по

  • Я использую его уже два года, эти крышки отлично держатся и их легко чистить, один из моих предметов должен быть там, где вы его кладете. держит тепло,


    из
    Profitt's Roasted Corn & Taters
    по

  • Эти крышки - отличный вес для переноски предметов на мероприятия.Они хорошо моются и продолжают сиять. Они были отличным дополнением к моей коллекции кейтеринга.


    из
    Христианское братство Харис
    по

  • Моя крышка кастрюли в отеле была потеряна во время мероприятия, поэтому мне пришлось купить новую одноразовую замену. Подходит для любой гостиничной сковороды размером 8 кварт.


    по

  • Они хорошо закрывают сковороды на нашем паровом столе.Они хорошо выглядят и функционируют. Наличие ручки сверху - огромное преимущество, позволяющее избежать ожогов.


    из
    DogOnIt Хот-доги
    по

  • Этот продукт очень полезен, он сохраняет еду в тепле. Он хорош для вечеринки на улице, свадьбы, нержавеющая сталь выглядит великолепно. Я закажу еще несколько продуктов.


    из
    1110 HY 57 Юг
    по

  • Куплен взамен пары чехлов, у которых сломались ручки.Пока они держатся хорошо, но вам нужно быть осторожными с ручками. Если их посадить неправильно, их можно просто разделить на две части. В целом продукт хорошего качества.


    по

  • Быстрая доставка, очень хороший продукт с качеством, связь по электронной почте для отслеживания информации о номере вовремя, как всегда, интернет-магазин, лучший онлайн-продавец.


    из
    Cleanby Corp
    по

  • Выбор 8 Qt.Полноразмерный паровой столик / крышка кастрюли для гостиницы привлекательны и долговечны. Ручка удобна в обращении и хорошо помещается на полноразмерной сковороде. Я куплю это снова.


    по

  • Отличная крышка пароварки по очень хорошей цене. Выбор бренда - это всегда отличный недорогой способ получить то, что вам нужно для вашей кухни. Прекрасно работает.


    из
    Классик Burger Group Inc.
    по

  • Хорошие крышки кастрюль.Мы сравнили с более дорогими вариантами, и они оказались очень сопоставимыми по меньшей стоимости. Определенно купил бы снова для нужд


    по

  • Ручка на нем немного хлипкая, поэтому я беспокоюсь, что он не прослужит столько же, сколько другие 2, которые у меня есть, но это было намного дешевле, поэтому я не могу жаловаться. Эта крышка также имеет большую «губу», чем другие, которые у меня есть, поэтому я не могу вставить ее в свой CatorGator, или, скорее, она скользит внутрь, но дверное сусло закрывается и полностью закрывается должным образом, поскольку оно немного выступает.Из-за цены я все равно рекомендую это, и я действительно не думаю, что ручка должна быть полностью прочной, так как крышка не очень тяжелая. У этого есть хороший подъем, поэтому более высокие продукты хорошо помещаются, а толщина хорошая.
    Я бы порекомендовал эту крышку, если ваше основное использование не будет в камбро или другом нагревательном шкафу. (в качестве примечания, у меня была такая же проблема с защелкиванием как в моем камбро, так и в моем категаторе)


    из
    Барбекю LaLuna

  • Это был мой любимый чехол для кастрюли для отелей, который я купил из-за куполообразного покрытия, и он выглядел очень профессионально для мероприятий общественного питания.Я уже подумываю о покупке большего количества таких, чтобы заменить существующие.


    из
    Еда южных берегов Сиглера
    по

  • Это крышка пароварки отличного качества по отличной цене. Имеет профессиональный вид и прекрасно чистит. Они легкие, но достаточно прочные для регулярного использования. Мы очень довольны этим товаром.


    из
    Барбекю из маринованной свиньи и кафе
    по

  • Мне пришлось переупорядочить эту вершину из-за того, что я позволил кому-то одолжить мою, топы пришли быстро как раз к моей вечеринке, и они были совсем не дорогими.ЭТО ЛУЧШИЙ САЙТ HELENE JONES


    по

  • Нам нужно было заменить крышку кастрюли отеля на одном из наших натяжителей, и это отлично работает. Цена была очень хорошей, и доставка была быстрой.


    из
    Предприятия пастырства
    по

  • Эта крышка имеет красивый вид и будет хорошо смотреться с подходящей сковородой. Ручка немного хлипкая, поэтому аккуратно обращайтесь с красивой крышкой по отличной цене.


    по

  • Мне нравится, как эта полноразмерная крышка кастрюли для гостиниц добавляет еще больше чистого профессионального оформления. Специально для предприятий общественного питания клиентам понравится удобная ручка при обслуживании в буфете.


    по

  • Мы используем эти крышки кастрюль для парового стола как для поддержания температуры пищи, так и для закрытия пустых отсеков, когда барная стойка не используется.Выглядит отлично без огромных затрат.


    из
    Центр обучения сообщества Cobscook
    по

  • Они примерно так же дешевы, как и покрытия для паровых столов. Они имеют отличную цену и хорошо выглядят. Они хорошо очищаются небольшим количеством смазки для локтей. Цена отражает качество; если их уронить, они погнутся. Помните о своей цели, прежде чем идти по дешевому маршруту, но это отлично подходит для нас.


    из
    ООО «Сабино Рекавери Групп»
    по

  • Rhos op - действительно красивая крышка купола парового стола. Мы используем его для нашего парового стола для завтрака или для шведского стола, он отлично работает и отлично выглядит.


  • Я заказал эти крышки, потому что мне нужны были дополнительные крышки для посуды для натираний. Я очень доволен качеством и внешним видом этих крышек.Цена была еще одним дополнительным бонусом!


    из
    Министерство Трех Источников
    по

  • Хорошая крышка и хорошая цена. Я могу накрыть один полный размер или несколько комбинаций кастрюль меньшего размера.


    из
    Кафе Здесь, Там и Везде
    по

  • Я РАД, ЧТО Я ЗАКАЗАЛ ДАННЫЙ ТОВАР, ОН ПОДХОДИТ К БЛЮДАМ, ЧТО У МЕНЯ ОТЛИЧНЫЙ ПРОДУКТ !! Я БУДУ ЗАКАЗАТЬ БОЛЬШЕ ДРУГИХ БЛЮД, КОТОРЫЕ У МЕНЯ ЕСТЬ.


    из
    ALMA КУХНЯ
    по

  • Хорошая крышка среднего класса. Работает универсально для большинства полноразмерных блюд для натираний. Черная ручка - приятный штрих. Обычно мы привязываем к верху соответствующую тканевую салфетку, чтобы немного украсить ее. Легко моется и не теряет блеска.


    из
    The Savory Spoon Catering Co.
    по

  • Опять же, этот пункт был предложен несколькими инспекторами округа, которые знали, что я открываю собственную кофейню.Бренд NEMCO был рекомендован. Эта крышка позволяет мне разогревать продукты до подходящей температуры. Хорошо чистит.


    из
    Topplez Corporation
    по

  • Эти чехлы из жуков великолепны, но не позволяйте посудомоечным машинам использовать стальную мочалку для очистки. Они очень легко царапаются. По цене, которую вы не можете превзойти. Для достижения наилучших результатов очистите поверхность виндексом или полиролью для нержавеющей стали.


    по

  • Отличная крышка для сковороды, которая сохраняет еду в тепле всю ночь Это выглядит лучше, чем носить оловянную фольгу в бальном зале. Дает вам дополнительную ступень в классе.


    по

  • Я приобрел их в качестве дополнения к нескольким уже имеющимся у меня наборам посуды для жаривания. Эти крышки блестящие, отлично смотрятся и хорошо держатся на жаре, находясь на фуршетном столе. Вес крышек немного меньше, чем я ожидал, но оказалось, что это совсем не проблема.Черная пластиковая ручка хорошо выдерживает тепло и не сильно нагревается на ощупь. Я рекомендую этот продукт.


    по

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


    из
    аметистовый дом
    по

  • Это довольно простая крышка, которая выглядит довольно стандартно, но при этом очень хорошего качества.Крышка закрывается только на время подготовки, поэтому меня не слишком заботит ее внешний вид. Хороший.


    из
    Гриффин Кейтеринг
    по

  • Поддерживаемое подмножество HTML | Qt GUI 5.8

    Текстовые виджеты

    Qt могут отображать форматированный текст, заданный с помощью подмножества разметки HTML 4. Виджеты, использующие QTextDocument, такие как QLabel и QTextEdit, могут отображать форматированный текст, указанный таким образом.

    Использование разметки HTML в текстовых виджетах

    Виджеты автоматически обнаруживают разметку HTML и соответственно отображают форматированный текст.Например, установка свойства текста метки со строкой « Hello Qt! » приведет к тому, что метка будет отображать такой текст: Hello Qt!

    Когда для текста используется разметка HTML, Qt следует правилам, определенным спецификацией HTML 4. Сюда входят свойства по умолчанию для макета текста, такие как направление потока текста (слева направо), которое можно изменить, применив атрибут dir к блокам текста.

    В следующей таблице перечислены HTML-теги, поддерживаемые движком форматированного текста Qt:

    948 body

    i как i

    9264 атрибутов7 Поддерживает стандартные атрибуты.

    Тег Описание Комментарий
    a Якорь или ссылка Поддерживает атрибуты href и name .
    адрес Адрес
    b Полужирный
    большой Крупный шрифт
    Document body Поддерживает атрибут bgcolor , который может быть именем цвета Qt или спецификацией цвета #RRGGBB .
    br разрыв строки
    центр центрированный абзац
    цитата строчная ссылка
    код код То же, что tt .
    dd Данные определения
    dfn Определение То же, что и i .
    div Разделение документа Поддерживает стандартные атрибуты блоков.
    dl Список определений Поддерживает стандартные атрибуты блоков.
    dt Термин определения Поддерживает стандартные атрибуты блока.
    em Выделено То же, что i .
    шрифт Размер, семейство и / или цвет шрифта Поддерживает следующие атрибуты: размер , грань и цвет (названия цветов Qt или #RRGGBB ).
    h2 Заголовок уровня 1 Поддерживает стандартные атрибуты блока.
    h3 Заголовок уровня 2 Поддерживает стандартные атрибуты блока.
    h4 Заголовок уровня 3 Поддерживает стандартные атрибуты блока.
    h5 Заголовок уровня 4 Поддерживает стандартные атрибуты блока.
    h5 Заголовок уровня 5 Поддерживает стандартные атрибуты блока.
    h6 Заголовок уровня 6 Поддерживает стандартные атрибуты блока.
    head Заголовок документа
    hr Горизонтальная линия Поддерживает атрибут width , который может быть указан как абсолютное или относительное (% ) значение.
    html HTML-документ
    i Курсив
    img Источник изображенияc , Источник изображения 900 Поддерживает , Qr 900 , ширина и высота атрибуты.
    kbd Текст, введенный пользователем
    meta Meta-information Если кодировка текста указана с помощью мета-тега , он выбирается Qt :: codecForHtml ().Аналогично, если кодировка указана для QTextDocument :: toHtml (), кодировка сохраняется с использованием метатега , например:

      
    li Элемент списка
    nobr Неразрывный текст
    ol Упорядоченный список
    p Пункт По умолчанию с выравниванием по левому краю. Поддерживает стандартные атрибуты блока.
    pre Предварительно отформатированный текст
    qt Qt rich-text document Синоним html . Предусмотрено для совместимости с более ранними версиями Qt.
    s Зачеркнутый
    samp Пример кода То же, что и tt .
    small Small font
    span Сгруппированные элементы
    strong Strong То же, что и b .
    sub Нижний индекс
    sup Верхний индекс
    таблица Таблица Цвет рамки Поддерживает следующие атрибуты цвета границы : или #RRGGBB ), cellspacing , cellpadding , width (абсолютная или относительная) и высота .
    tbody Table body Ничего не делает.
    td Ячейка данных таблицы Поддерживает стандартные атрибуты ячеек таблицы.
    tfoot Нижний колонтитул таблицы Ничего не делает.
    th Ячейка заголовка таблицы Поддерживает стандартные атрибуты ячеек таблицы.
    thead Заголовок таблицы Если указан тег thead , он используется при печати таблиц, охватывающих несколько страниц.
    заголовок Заголовок документа Значение, указанное с помощью тега title , доступно через QTextDocument :: metaInformation ().
    tr Строка таблицы Поддерживает атрибут bgcolor , который может быть именем цвета Qt или спецификацией цвета #RRGGBB .
    tt Шрифт для печатного текста
    u Подчеркнутый
    ul Неупорядоченный список Поддерживает стандартный список атрибутов.
    var Переменная То же, что и i .

    Атрибуты блока

    Следующие атрибуты поддерживаются тегами div , dl , dt , h2 , h3 , h4 , h5 , h5 , h6 , p :

    • выровнять ( слева , справа , по центру , выровнять )
    • директория ( литр , RTL )

    Список атрибутов

    Тег ol и ul поддерживают следующий атрибут:

    • тип ( 1 , a , A , квадрат , диск , круг )

    Атрибуты ячеек таблицы

    Теги td и th поддерживают следующие атрибуты:

    • ширина (абсолютная, относительная или без значения)
    • bgcolor (названия цветов Qt или #RRGGBB )
    • colspan
    • пролет между рядами
    • выровнять ( слева , справа , по центру , выровнять )
    • valign ( верхний , средний , нижний )

    CSS Свойства

    В следующей таблице перечислены свойства CSS, поддерживаемые движком форматированного текста Qt:

    Свойство Значения Описание
    цвет фона <цвет> Цвет фона для элементов
    фоновое изображение Фоновое изображение для элементов
    цвет <цвет> Цвет переднего плана текста
    семейство шрифтов <фамилия> Имя семейства шрифтов
    размер шрифта

    [маленький | средний | большой | x-большой | xx-большой] | <размер> pt | px

    Размер шрифта относительно шрифта документа или в точках или пикселях
    font-style [нормальный | курсив | наклонный]
    font-weight [нормальный | жирный | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900] Определяет толщину шрифта, используемую для текста, где нормальный и жирный отображаются на соответствующие веса QFont.Числовые значения в 8 раз превышают эквивалентные значения веса QFont.
    оформление текста нет | [подчеркивание || надстрочный || сквозная] Дополнительные текстовые эффекты
    шрифт [[<'font-style'> || <'font-weight'>]? <'font-size'> <'font-family'>] Свойство сокращения шрифта
    text-indent px Отступ текста первой строки в пикселях
    white- пространство нормальный | предварительно | nowrap | pre-wrap Объявляет, как обрабатываются пробелы в HTML.
    верхнее поле px Поле верхнего абзаца в пикселях
    нижнее поле px Поле нижнего абзаца в пикселях
    -левое px Левое поле абзаца в пикселях
    правое поле px Правое поле абзаца в пикселях
    padding-top < length> px Заполнение верхней ячейки таблицы в пикселях
    padding-bottom px Заполнение нижней ячейки таблицы в пикселях
    padding-left px Заполнение левой ячейки таблицы в пикселях
    отступ справа px Заполнение правой ячейки таблицы в пикселях 9264 8
    padding px Сокращение для одновременной установки всех свойств заполнения.
    выравнивание по вертикали базовая линия | суб | супер | средний | наверх | снизу Выравнивание текста по вертикали. Для вертикального выравнивания в ячейках текстовой таблицы применяются только середина, верх и низ.
    цвет рамки <цвет> Цвет рамки для текстовых таблиц.
    с рамкой нет | пунктирная | пунктирная | точка-тире | точка-точка-тире | твердый | двойной | паз | гребень | вставка | outset Стиль границы для текстовых таблиц.
    фон [<'background-color'> || <'background-image'>] Сокращенное свойство фона
    разрыв страницы перед [авто | всегда] Сделать возможным принудительный разрыв страницы перед абзацем / таблицей
    разрыв страницы после [авто | всегда] Сделать возможным принудительный разрыв страницы после абзаца / таблицы
    float [left | право | none] Определяет, где изображение или текст будут помещены в другом элементе.Обратите внимание, что свойство float поддерживается только для таблиц и изображений.
    преобразование текста [верхний регистр | нижний регистр] Выберите преобразование, которое будет выполнено с текстом перед его отображением.
    font-option small-caps Выполните преобразование smallcaps для текста перед его отображением.
    интервал между словами <ширина> пикселей Задает альтернативный интервал между каждым словом.

    Поддерживаемые селекторы CSS

    Поддерживаются все классы селекторов CSS 2.1, за исключением селекторов псевдоклассов, таких как : первый дочерний элемент , : посещенный и : hover .

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

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