顯示具有 read 標籤的文章。 顯示所有文章
顯示具有 read 標籤的文章。 顯示所有文章

2015年10月14日 星期三

[Qt] Read Qss file (讀取QSS檔案)

qss file內容約為:

CImageBrowseDialog {
border: none;
background-image: url(Skins/CImageBrowseDialog/Common/004-back.jpg);
}

QPushButton#previousButton {
qproperty-geometry: rect(15 656 98 70);
background-image: url(Skins/CImageBrowseDialog/Common/004-normal_25.jpg);
}

QPushButton#previousButton:pressed {
background-image: url(Skins/CImageBrowseDialog/Common/004-push_25.jpg);
}

QPushButton#previousButton:disabled {
background-image: url(Skins/CImageBrowseDialog/Common/004-gray_25.jpg);
}

QPushButton#nextButton {
qproperty-geometry: rect(907 658 97 70);
background-image: url(Skins/CImageBrowseDialog/Common/004-normal_28.jpg);
}

QPushButton#nextButton:pressed {
background-image: url(Skins/CImageBrowseDialog/Common/004-push_28.jpg);
}

QPushButton#nextButton:disabled {
background-image: url(Skins/CImageBrowseDialog/Common/004-gray_28.jpg);
}

QLabel#PreLabel
{
  border: none;
  qproperty-geometry: rect(15 720 98 40);
  color : white;
}
 
QLabel#NextLabel
{
  border: none;
  qproperty-geometry: rect(907 720 98 40);
  color : white;
}


該如何讀取呢?

在main.cpp裡面

#include <QtGui/QApplication>
#include "mainwindow.h"


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    QFile file("D:\\MyCode\\Qt\\CImageBrowseDialog(QSS file)\\COMMON.QSS");
    file.open(QFile::ReadOnly);
    QString styleSheet(file.readAll());
    qDebug()<<styleSheet;
    a.setStyleSheet(styleSheet);


    return a.exec();
}


讀取路徑可以設為相對(這邊是絕對路徑)

file.readAll()就會把所有的都讀近QString當中,最後設定application的setStyleSheet()即可完成

(當然UI介面要有相對應的button/label,objectName也要相同就是了)

END

2014年2月7日 星期五

[C#/winform] RS-232/SerialPort 傳送及接收

1.先從工具箱拉SerialPort元件(要記得程式碼加入System.IO.Ports)

2.點選元件可以調整BaudRate.DataBit.ParityBit.HandShake...等

3.也可以從程式碼中新增: serialPort1 = new SerialPort(COM幾(String), 9600, Parity.None, 8, StopBits.One);

4.如果要抓取電腦現有的COM,可以使用string[] port_name = SerialPort.GetPortName();
可以用foreach() loop + comboBox的add來新增到comboBox裡面

5.讀取部分
           private byte[] Port_read()
        {
            //---------------------------讀取部分---------------------------------//
            int B2R = serialPort1.BytesToRead;//有多少
            byte[] Buffer = new byte[B2R];//new多少byte 陣列
            if (B2R > 0)
            {
                serialPort1.Read(Buffer, 0, B2R);//有多少就讀入多少(共85byte)
            }
            return Buffer;
            //---------------------------讀取部分-End------------------------------//
        }

6.寫入部分
          //---------------------------寫入部分----------------------------------//
            //先檢查有幾個modbus,
            try
            {
                serialPort1.Write(byte陣列, 0, 寫多少byte);
            }
            catch (InvalidOperationException)
            {
                MessageBox.Show("關閉通訊埠");//關閉通訊埠
            }
            catch (IOException IOE)
            {
                MessageBox.Show(IOE.Message);
                MessageBox.Show("IO錯誤");//IO exception
            }

大致上就完成簡單的通訊程式

其餘比較有用的:

System.Text.Encoding.Default.GetBytes(String); //string轉byte[]

System.Text.Encoding.Default.GetString(byte[]);//byte[]轉String