2009年10月21日 星期三

將widget存成圖檔

#include <QApplication>
#include <QLabel>
#include <QTextCodec>
#include <QRgb>

int main(int argc, char *argv[]) {
QApplication app(argc, argv);

QTextCodec *codec = QTextCodec::codecForName("Big5-ETen");

QLabel *label = new QLabel;
label->setText(codec->toUnicode("<center><h1>Qt4 學習筆記</h1>~yycking.blogspot.com</center>"));

label->setStyleSheet("QLabel { background-color: white; }");
label->adjustSize();

label->show();

QImage image = QPixmap::grabWidget(label).toImage();
image = image.convertToFormat(QImage::Format_Indexed8);

QVector<QRgb> indexs=image.colorTable();
for (int i = 0; i < indexs.size(); ++i) {
int r=qRed(indexs[i]);
int g=qGreen(indexs[i]);
int b=qBlue(indexs[i]);
int a=qGray(indexs[i]);
indexs[i]=qRgba(r,g,b,255-a);
}

image.setColorTable(indexs);
image.save("somefile.PNG");

return app.exec();
}



這個方法只簡易的將Gray代替alpha而已的圖

2009年10月9日 星期五

用Qt designer自訂slots


開啟一個新專案


選擇Widget

用Qt Designer開啟ui檔


設計界面


按F4將spinbox拖到widget


打開連線設定


選左邊的訊號,再點又右邊的編輯按鈕


點擊信號槽下的加號,填入新增slot,連續二個確定回到主界面


按F3將widget拖到textEdit


按編輯按鈕


按信號下的加號,增加新的singal


選擇剛建立的signal

存檔,回到Qt creator
修改檔案
widget.h
#ifndef WIDGET_H
#define WIDGET_H

#include <QtGui/QWidget>

namespace Ui
{
class Widget;
}

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();

public slots:
void setFontSize(int);

signals:
void fontSizeChanged(qreal);

private:
Ui::Widget *ui;
};

#endif // WIDGET_H


widget.cpp
#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
: QWidget(parent), ui(new Ui::Widget)
{
ui->setupUi(this);
}

Widget::~Widget()
{
delete ui;
}

void Widget::setFontSize(int size){
emit fontSizeChanged((qreal)size);
}



如何將Qt中的assistant,designer和linguist中文化

將C:\Qt\2009.04\qt\translations
內的所有檔案拉到
C:\Qt\2009.04\qt\bin\lrelease.exe
即可