三、golang-qt 使用qrc资源qss样式表

继续使用上次的代码

使用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
}
不想平凡,奈何太懒 T_T
原文地址:https://www.cnblogs.com/wuyaxiansheng/p/14550256.html