⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listboxqt.cpp

📁 porting scintilla to qt
💻 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 + -