QtCodeStats
QtCodeStats est un petit utilitaire affichant des statistiques de code source.
- Nombre de lignes de code
- tailles des fichiers
- % de commentaires
Basé sur Qt et prévu pour un code source Qt, il peut être adapté a d’autres type de codes.
Distribué sous licence GPL v3
dépôt hg : https://bitbucket.org/tankd03/qtcodestats
TnkBiblio
Un petit programme de gestion de bibliothèque.
Recherche et téléchargement des informations des livres en ligne, filtrage, base de donnée locale.
Encore en version de tests.
La première version est basé sur Qt Widget sur PC (Interface QT Standard), (Windows et Linux) .
Suivra une version basé sur QtQuick pour PC et mobile(Android, Meego).
Cette dernière devrai être beaucoup plus conviviale.
Affichage QML dans SFML 2.0
Ayant découvert l’interface QtQuick depuis peu, j’ai trouvé le concept intéressant pour des interfaces de jeux (menu, HUD, …).
Cela permettra de gérer facilement des interfaces animés et beaucoup plus évolués.
Voici donc une classe permettant l’affichage d’une interface QML dans SFML 2.
Pour l’instant, elle ne gère pas le redimensionnement, les entrés claviers et souris, ni la modification des éléments.
Un petit schéma expliquant le fonctionnement :
Un petit screenshot :
Et le code source :
CQmlGui.h
#ifndef CQMLGUI_H
#define CQMLGUI_H
#include "../Root/Core/CUtil.h" // TNK_EXPORT
#include
#include
#include
namespace Tnk
{
//Classe d'affichage d'une interface QML (QtQuick) dans un sf::Sprite
//Nécessite un QApplication valide
//Le clavier et la souris ne sont pour l'instant pas géré.
class TNK_EXPORT CQmlGui : public QDeclarativeView
{
public:
CQmlGui(int width, int height);
virtual ~CQmlGui();
//Met à jour l'affichage du QML et écrit dans le sprite
void Update();
const sf::Sprite& getSfSprite() const
{
return SfSprite;
}
void setProperty(string str, string text);
void setProperty(string str, int i);
void setProperty(string str, float f);
protected:
//L'image pour le rendu via Qt
QImage *RenderImage;
//L'image pour le transfert depuis RenderImage
sf::Image SfImage;
//le Sprite pour l'affichage
sf::Sprite SfSprite;
};
}
#endif // CQMLGUI_H
CQmlGui.cpp
#include « cqmlgui.h »
#include « CWindow.h » //SFML2 Window
namespace Tnk
{
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CQmlGui::CQmlGui(string fileName, int width, int height)
:QDeclarativeView(NULL)
{
//charge le fichier QML
setSource(QUrl::fromLocalFile(fileName.c_str()));
setAttribute(Qt::WA_TranslucentBackground);
QPalette palette;
palette.setColor(QPalette::Base, Qt::transparent);
setPalette(palette);
setAutoFillBackground(false);
//Créé l’image de rendu
RenderImage = new QImage(width, height, QImage::Format_ARGB32);
//cré l’image SFML
SfImage.Create(width, height);
SfImage.SetSmooth(false);
SfSprite.SetImage(SfImage);
SfSprite.SetBlendMode(sf::Blend::Alpha);
SfShader.LoadFromFile(« shaders/qml.sfx »);
SfShader.SetTexture(« texture », sf::Shader::CurrentTexture);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
CQmlGui::~CQmlGui()
{
delete RenderImage;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CQmlGui::Update()
{
//Met a jour QML
update();
//Rendu vers RenderImage
QPainter Painter(RenderImage);
this->render(
&Painter,
QRectF(0, 0, RenderImage->width(), RenderImage->height()),
QRect(0, 0, this->sceneRect().size().toSize().width(), this->sceneRect().size().toSize().height()));
//RenderImage->save(« qt.png »);
//Copie dans Sf::Image
SfImage.UpdatePixels(RenderImage->bits());
//SfImage.SaveToFile(« sf.png »);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CQmlGui::RenderToWindow()
{
CWindow::self()->getSfWindow()->Draw(SfSprite, SfShader);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CQmlGui::setProperty(string str, string text)
{
rootObject()->setProperty(
str.c_str(),
QVariant(QString(text.c_str())));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CQmlGui::setProperty(string str, int i)
{
rootObject()->setProperty(
str.c_str(),
QVariant(i));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void CQmlGui::setProperty(string str, float f)
{
rootObject()->setProperty(
str.c_str(),
QVariant(f));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}