📄 listboxqt.cpp
字号:
#include <stdlib.h>#include "qsteclasses.h"#include "listboxqt.h"QString ListBoxQt::backdoor;ListBoxQt::ListBoxQt():cb_action(0),cb_data(0),qlb(0),visible_rows(5),utf8(false){}void ListBoxQt::SetFont(Font &font){ QFont *f = reinterpret_cast<QFont *>(font.GetID()); if(f) qlb->setFont(*f);}void ListBoxQt::Create(Window &parent,int,Point,int,bool unicodeMode){ utf8 = unicodeMode; id = qlb = new QSteListBox(reinterpret_cast<QWidget*>(parent.GetID())->parentWidget(),this);}void ListBoxQt::SetAverageCharWidth(int wide){}void ListBoxQt::SetVisibleRows(int rows){ visible_rows = rows;}int ListBoxQt::GetVisibleRows() const{ return visible_rows;}PRectangle ListBoxQt::GetDesiredRect(){ PRectangle rc(0,0,100,100); if(qlb){ QSize size = qlb->sizeHint(); rc.right = size.width(); rc.bottom = size.height(); } return rc;}int ListBoxQt::CaretFromEdge(){ int dist = 0; for(xpmMap::const_iterator it = xset.begin();it != xset.end();++it){ int w = it.value().width(); if(dist < w) dist = w; } if(qlb) dist += qlb->frameWidth(); dist += 3; return dist;}void ListBoxQt::Clear(){ if(qlb) qlb->clear();}void ListBoxQt::Append(char *s,int type){ if(!qlb) return; QString str; if(utf8) str = QString::fromUtf8(s); else str = QString::fromLatin1(s); xpmMap::const_iterator it; if(type < 0 || (it = xset.find(type)) == xset.end()){ qlb->addItem(str); }else{ qlb->addItemPixmap(it.value(),str); }}int ListBoxQt::Length(){ if(qlb) return qlb->count(); else return 0;}void ListBoxQt::Select(int n){ if(qlb) qlb->setCurrentRow(n);}int ListBoxQt::GetSelection(){ if(qlb) return qlb->currentRow(); else return -1;}int ListBoxQt::Find(const char *prefix){ if(qlb) return qlb->find(prefix); else return -1;}void ListBoxQt::GetValue(int n,char *value,int len){ if(!qlb) return; backdoor = qlb->text(n); if(backdoor.isEmpty() || len <= 0){ value[0] = '\0'; }else{ const char *s; int slen; QByteArray bytes; if(utf8) bytes = backdoor.toUtf8(); else bytes = backdoor.toLatin1(); s = bytes.data(); slen = bytes.length(); while(slen -- && len-- && *s != ' ') *value++ = *s++; *value = '\0'; }}void ListBoxQt::Sort(){ if(!qlb) return; else qlb->sortItems(Qt::AscendingOrder);//sorting order}void ListBoxQt::RegisterImage(int type,const char *xpm_data){ xset.insert(type,*reinterpret_cast<const QPixmap *>(xpm_data));}void ListBoxQt::ClearRegisteredImages(){ xset.clear();}void ListBoxQt::SetDoubleClickAction(CallBackAction action,void *data){ cb_action = action; cb_data = data;}void ListBoxQt::SetList(const char *list,char separator,char typesep){ char *words; Clear(); if((words = qstrdup(list)) != NULL){ char *startword = words; char *numword = NULL; for(int i = 0;words[i] != '\0';i++){ if(words[i] == separator){ words[i] = '\0'; if(numword) *numword = '\0'; Append(startword,numword ? atoi(numword + 1) : -1); startword = words + i + 1; numword = NULL; }else if(words[i] == typesep){ numword = words + i; } } if(startword){ if(numword) *numword = '\0'; Append(startword,numword ? atoi(numword + 1) : -1); } delete[] words; }}//Listbox functionListBox::ListBox(){}ListBox::~ListBox(){}ListBox *ListBox::Allocate(){ return new ListBoxQt();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -