继续使用上次的代码
使用qt的资源qrc需要在根目录建立qrc文件文件内容为
<RCC> <qresource prefix="/omc"> <file>resource/imgs/loginback.png</file> <file>resource/imgs/start.ico</file> </qresource> <qresource prefix="/omcqss"> <file>style/login.qss</file> </qresource> </RCC>
qrc文件其实就是个xml文件 perfix 是前缀file里面的内容就是从项目根目录为相对路径的具体资源的路径,建立好对应的资源文件如图
其中qss里的样式为:
QWidget{ background-color: white; background-image: url(:/omc/resource/imgs/loginback.png); background-repeat: no-repeat; }
接下来给出使用的代码
package mainwindow import ( "fmt" "github.com/therecipe/qt/core" "github.com/therecipe/qt/widgets" "omc/ui" "omc/xlog" ) type __loginwindow struct{} func (*__loginwindow) Init() {} type loginwindow struct { *__loginwindow *ui.Omcbasewindow } func Newloginwindow(p widgets.QWidget_ITF) *loginwindow { var par *widgets.QWidget if p != nil { par = p.QWidget_PTR() } w := &loginwindow{Omcbasewindow: ui.NewOmcbasewindow(par)} w.Init() w.setupUI() return w } func (w *loginwindow) setupUI() { if w.ObjectName() == "" { w.SetObjectName("loginwindow") } w.Resize2(663, 450) w.retranslateUi() } func (w *loginwindow) retranslateUi() { //设置界面 //w.SetWindowTitle("用户登录") w.SetWindowFlags(core.Qt__FramelessWindowHint) //应用样式 w.SetStyleSheet(getQssContent(":/omcqss/style/login.qss")) } //读取qss文件 func getQssContent(path string) string { qf := core.NewQFile2(path) var style string = "" if qf.Open(core.QIODevice__ReadOnly) { style = qf.ReadAll().Data() } defer qf.Close() xlog.Info(fmt.Sprintf("qss string is %s ", style)) return style }