程序例子:
int main(int argc, char* argv[])
{
QApplication a(argc, argv); //注意,这里是QApplication
ga.setStdLocaleForUTF8();
_pn(1);
_pn(int(5));
_pn(double(3.1415926));
_pn(QColor());
_pn(_string("中"));
_pn(std::string("华"));
_pn(std::wstring(_t("人")));
_pn(QString("们"));
_pn(_StrA("共"));
_pn("和");
_pn(_t("国"));
_pn(QByteArray("123中文"));
_pn(QByteArray("123中文").data());
_pn(QWidget());
return a.exec();
}
输出结果:
_pn会把它暂时无法打印的内容输出它的类型名,例如:
_StrA
QWidget
关键代码:
/// <summary>
/// 在屏幕上显示内容
/// </summary>
/// <param name="pt"></param>
/// <param name="sTypeName"></param>
/// 创建时间:2025-02-16 最后一次修改时间:2025-02-16
void _p(void* pt, const char* sTypeName);
/// <summary>
/// 在屏幕上显示内容
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// 创建时间: 2025-02-05 最后一次修改时间:2025-02-05
template<class T>
inline void _p(const T& t) {
_p((void*) (&t), typeid(t).name());
}
#define _pn(var) (_cout <<_t(#var)<<_t("="));_p(var);
在_p的实现中,所有内容都由_tostr函数完成,注意,像
这样的显示函数性能慢它几万倍也没关系,不要说十几倍。
_string _tostr(void* pt, const char* sTypeName)
{
_StrA sType = sTypeName;
_string sResult(_t(""), 100);
if (sType == typeid(char*).name() || sType == typeid(const char*).name()) {
char** ppC = ((char**)(pt)); //指向指针的指针
sResult.add(_string::qt_fromUtf8(*ppC));
}
else if (sType == typeid(wchar_t*).name() || sType == typeid(const wchar_t*).name()) {
wchar_t** ppC = ((wchar_t**)(pt)); //指向指针的指针
sResult.add(*ppC);
}
#ifdef _QT_ //---------------------------------------------------------_QT_
else if (sType == typeid(QStringList).name()) {
QStringList* data = (QStringList*)pt;
if (data->size() == 0)
sResult.add(_t("{}"));
else {
sResult.add(_t("{"));
for (int i = 0; i < data->size() - 1; ++i) {
sResult.add(_t("\""));
sResult.add(data->at(i).toStdWString());
sResult.add(_t("\","));
}
sResult.add(_t("\""));
sResult.add(data->last().toStdWString());
sResult.add(_t("\""));
sResult.add(_t("}"));
}
}
else if (sType == typeid(QString).name()) {
sResult.add(_t("\""));
sResult.add((*((QString*)(pt))).toStdWString());
sResult.add(_t("\""));
}
else if (sType == typeid(QDateTime).name()) {
return QtDateTimeToString((QDateTime*)pt);
}
else if (sType == typeid(QFont).name()) {
QFont* pf = (QFont*)(pt);
sResult.add(pf->toString().toStdWString());
}
else if (sType == typeid(QByteArray).name()) {
QByteArray* pb = (QByteArray*)(pt);
sResult.add(_string::fromOnlyData(pb->data(), pb->size()));
}
else if (sType == typeid(QColor).name()) {
QColor* pc = (QColor*)(pt);
//sResult.add(_string::fromOnlyData(pb->data(), pb->size()));
/*
alpha:透明度。
red:红色分量。
green:绿色分量。
blue:蓝色分量。
pad:填充字段。
*/
_Color c;
c._a = pc->alpha();
c._r = pc->red();
c._g = pc->green();
c._b = pc->blue();
sResult.add(c.toString());
}
#endif // ---------------------------------------------------------_QT_
else if (sType == typeid(_StrListW).name()) {
_StrListW* data = (_StrListW*)pt;
if (data->size() == 0)
sResult.add(_t("{}"));
else {
sResult.add(_t("{"));
for (int i = 0; i < data->size() - 1; ++i) {
sResult.add(_t("\""));
sResult.add(data->at(i).qt_toStdWString());
sResult.add(_t("\","));
}
sResult.add(_t("\""));
sResult.add(data->last()->data.qt_toStdWString());
sResult.add(_t("\""));
sResult.add(_t("}"));
}
}
else if (sType == typeid(int).name()) {
int *pNum = ((int*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(float).name()) {
float* pNum = ((float*)(pt));
sResult.add(_Math::doubleToStr(*pNum));
}
else if (sType == typeid(double).name()) {
double *pNum = ((double*)(pt));
sResult.add(_Math::doubleToStr(*pNum));
}
else if (sType == typeid(__int64).name()) {
__int64 *pNum = ((__int64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_byte).name()) {
_byte *pNum = ((_byte*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int8).name()) {
_int8 *pNum = ((_int8*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int16).name()) {
_int16 *pNum = ((_int16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int32).name()) {
_int16 *pNum = ((_int16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int64).name()) {
_int64 *pNum = ((_int64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint8).name()) {
_uint8 *pNum = ((_uint8*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint16).name()) {
_uint16 *pNum = ((_uint16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint32).name()) {
_uint32 *pNum = ((_uint32*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint64).name()) {
_uint64* pNum = ((_uint64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(std::string).name()) {
std::string* ps = ((std::string*)(pt));
sResult.add(_string::qt_fromStdString(*ps));
}
else if (sType == typeid(std::wstring).name()) {
std::wstring* ps = ((std::wstring*)(pt));
sResult.add(_string::qt_fromStdWString(*ps));
}
else if (sType == typeid(_string).name()) {
_string* ps = ((_string*)(pt));
sResult.add(*ps);
}
else if (sType.indexOf("char const [") != -1) {//char const [9]
const char* ps = (char*)(pt);
sResult.add(_string::qt_fromUtf8(ps));
}
else if (sType.indexOf("wchar_t const [") != -1) {//char const [9]
const wchar_t* ps = (wchar_t*)(pt);
sResult.add(ps);
}
else if (sType == typeid(bool).name()) {
bool* pb = (bool*)(pt);
if (*pb)
sResult.add(_t("true"));
else
sResult.add(_t("false"));
}
else {
sResult.add(sType);
}
return sResult;
}
以下是完整源码:
_p.h
/*********************************************************************
文件名 : _p.h
功能 : 类似于Python的print
作者 : 李锋
手机 : 13828778863
Email : ruizhilf@139.com
创建时间 : 2024年09月20日
最后一次修改时间 : 2025年02月22日
*********************************************************************/
#pragma once
#include "_Macro.h"
_LF_BEGIN_
class _Font;
class _Color;
class _StrW;
_LF_END_
/// <summary>
///
/// </summary>
/// <param name="pt"></param>
/// <param name="sTypeName"></param>
/// <returns></returns>
/// 创建时间:2025-02-16 最后一次修改时间:2025-02-16
_string _tostr(void* pt, const char* sTypeName);
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// <returns></returns>
/// 创建时间:2025-02-16 最后一次修改时间:2025-02-16
template<class T>
inline _string _tostr(const T& t) {
return _tostr((void*)(&t), typeid(t).name());
}
/
/// <summary>
/// 在屏幕上显示内容
/// </summary>
/// <param name="pt"></param>
/// <param name="sTypeName"></param>
/// 创建时间:2025-02-16 最后一次修改时间:2025-02-16
void _p(void* pt, const char* sTypeName);
/// <summary>
/// 在屏幕上显示内容
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// 创建时间: 2025-02-05 最后一次修改时间:2025-02-05
template<class T>
inline void _p(const T& t) {
_p((void*) (&t), typeid(t).name());
}
#define _pn(var) (_cout <<_t(#var)<<_t("="));_p(var);
/
/// <summary>
/// 显示机器的二进制码
/// </summary>
/// <param name="pt"></param>
/// <param name="nSize"></param>
/// 创建时间:2025-02-16 最后一次修改时间:2025-02-16
void _pb(void* pt, const size_t& nSize);
/// <summary>
/// 显示机器的二进制码
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// 创建时间:2015-01-01 最后一次修改时间:2025-02-16
template<class T>
inline void _pb(const T& t) {
_pb((void*)(&t), sizeof(t));
}
//显示机器的二进制码
#define _pnb(var) (_cout <<_t(#var)<<_t("="));_pb(var);
/
//在窗体上显示内容
/
/// <summary>
/// 在窗体上显示内容
/// </summary>
/// <param name="pt"></param>
/// <param name="sTypeName"></param>
/// 创建时间:2015-02-16 最后一次修改时间:2015-02-16
void _ps(void* pt, const char* sTypeName, const lf::_Font& f, const lf::_Color& c);
/// <summary>
///
/// </summary>
/// <param name="pt"></param>
/// <param name="sTypeName"></param>
/// <param name="sqml"></param>
/// 创建时间:2015-02-16 最后一次修改时间:2015-02-16
void _ps(void* pt, const char* sTypeName, const _string& sqml);
/// <summary>
/// 在窗体上显示内容
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// 创建时间:2015-02-16 最后一次修改时间:2015-02-16
template<class T>
inline void _ps(const T& t, const lf::_Font& f = lf::_Font("宋体",18), const lf::_Color &c = lf::_Color::Red){
_ps((void*)(&t), typeid(t).name(),f,c);
}
/// <summary>
/// 在窗体上显示内容
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
/// 创建时间:2015-02-16 最后一次修改时间:2015-02-16
template<class T>
inline void _ps(const T& t,const _string sqml) {
_ps((void*)(&t), typeid(t).name(), sqml);
}
_p.cpp
//#undef _QT_
#include "_p.h"
#include "global_c_all.h"
#ifdef _QT_ _QT_
#include <QApplication>
#include <QWidget>
#include <QMouseEvent>
#include <QDebug>
#include <qdatetime>
#include <qdialog.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qpainter>
#include <qtextedit>
#include <qcolor>
/
#include "my_QWidget.h"
/*
在Qt中,Q_OBJECT宏通常需要放在头文件中。
Q_OBJECT宏用于为类声明扩展的Qt功能,包括信号、槽以及元对象特性等。它的主要作用是为类
与Qt元对象编译器(Meta - Object Compiler,MOC)协同工作提供支持,使类能够使用Qt的信
号槽机制、动态类型信息和动态属性等功能。
如果将Q_OBJECT宏放在源文件(cpp文件)中,MOC可能无法正确处理该类的元对象相关信息,导致
编译错误或运行时出现异常。因为MOC主要处理头文件中的类声明,以确保正确地生成与类相关的元
对象代码。
综上所述,为了确保Qt的元对象系统正常工作,Q_OBJECT宏应放置在头文件中。
*/
#endif _QT_
//
using namespace lf;
//
/*
void _p(const bool& ItemValue) {
if (ItemValue)
std::cout << "True" << "\n";
else
std::cout << "False" << "\n";
}
void _p(const int& ItemValue){ std::cout << ItemValue << "\n"; }
void _p(const long& ItemValue) { std::cout << ItemValue << "\n"; }
void _p(const size_t& ItemValue) { std::cout << ItemValue << "\n"; }
void _p(const __int64& ItemValue) { std::cout << ItemValue << "\n"; }
void _p(const double& ItemValue){ std::cout << ItemValue << "\n"; }
void _p(const char& ItemValue) { std::cout << "\'" << ItemValue << "\'\n"; }
void _p(const char* ItemValue) { std::cout << "\"" << ItemValue << "\"\n"; }
void _p(char* ItemValue) { std::cout << "\"" << ItemValue << "\"\n"; }
void _p(const wchar_t& ItemValue) { std::wcout << _t("\'") << ItemValue << _t("\'\n"); }
void _p(const wchar_t* ItemValue) { std::wcout << _t("\"") << ItemValue << _t("\"\n"); }
void _p(wchar_t* ItemValue) { std::wcout << _t("\"") << ItemValue << _t("\"\n"); }
void _p(const std::string& ItemValue) { std::cout << "\"" << ItemValue << "\"\n"; }
void _p(const std::wstring& ItemValue) { std::wcout << _t("\"") << ItemValue << _t("\"\n"); }
void _p(const lf::_StrA& ItemValue) { std::cout << "\"" << ItemValue << "\"\n"; }
void _p(const lf::_StrW& ItemValue) { std::wcout << _t("\"") << ItemValue << _t("\"\n"); }
/// <summary>
///
/// </summary>
/// <param name="ItemValue"></param>
/// 创建时间: 2025-02-15 最后一次修改时间:2025-02-15
void _p(const _StringList& ItemValue){
if (ItemValue.size() == 0)
std::wcout << _t("{}");
else {
std::wcout << _t("{");
for (int i = 0; i < ItemValue.size() - 1; ++i) {
std::wcout << _t("\"") << ItemValue[i].qt_toStdWString() << _t("\",");
}
std::wcout << _t("\"") << ItemValue[ItemValue.size() - 1].qt_toStdWString() << _t("\"");
std::wcout << _t("}\n");
}
}
void _p(const lf::_Array<lf::_Str<wchar_t>>& ItemValue)
{
if (ItemValue.size() == 0)
std::wcout << _t("{}");
else {
std::wcout << _t("{");
for (int i = 0; i < ItemValue.size() - 1; ++i) {
std::wcout << _t("\"") << ItemValue[i] << _t("\",");
}
std::wcout << _t("\"") << ItemValue[ItemValue.size() - 1] << _t("\"");
std::wcout << _t("}\n");
}
}
void _p(const lf::_ByteArray& ItemValue)
{
std::cout << (char*)ItemValue.dataPointer() << "\n";
}
void _p(const std::vector<int>& item) {
std::cout << "{";
size_t n = 0;
for (const int& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::vector<float>& item) {
std::cout << "{";
size_t n = 0;
for (const float& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::vector<double>& item) {
std::cout << "{";
size_t n = 0;
for (const double& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::vector<std::string>& item) {
std::cout << "{";
size_t n = 0;
for (const std::string& value : item) {
++n;
if (n != item.size()) {
std::cout << "\"" << value << "\"" << ",";
}else {
std::cout << "\"" << value << "\"";
}
}
std::cout << "}\n";
}
void _p(const std::vector<std::wstring>& item) {
std::wcout << "{";
size_t n = 0;
for (const std::wstring& value : item) {
++n;
if (n != item.size()) {
std::wcout << _t("\"") << value << _t("\"") << _t(",");
}else {
std::wcout << _t("\"") << value << _t("\"");
}
}
std::wcout << _t("}\n");
}
void _p(const std::list<int>& item) {
std::cout << "{";
size_t n = 0;
for (const int& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::list<float>& item) {
std::cout << "{";
size_t n = 0;
for (const float& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::list<double>& item) {
std::cout << "{";
size_t n = 0;
for (const double& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const std::list<std::string>& item) {
std::cout << "{";
size_t n = 0;
for (const std::string& value : item) {
++n;
if (n != item.size()) {
std::cout << "\"" << value << "\"" << ",";
}else {
std::cout << "\"" << value << "\"";
}
}
std::cout << "}\n";
}
void _p(const std::list<std::wstring>& item) {
std::wcout << "{";
size_t n = 0;
for (const std::wstring& value : item) {
++n;
if (n != item.size()) {
std::wcout << _t("\"") << value << _t("\"") << _t(",");
}else {
std::wcout << _t("\"") << value << _t("\"");
}
}
std::cout << "}\n";
}
void _p(const lf::_DList<std::string>& item)
{
std::cout << "{";
size_t n = 0;
for (const std::string& value : item) {
++n;
if (n != item.size()) {
std::cout << "\"" << value << "\"" << ",";
}
else {
std::cout << "\"" << value << "\"";
}
}
std::cout << "}\n";
}
void _p(const lf::_DList<int>& item) {
std::cout << "{";
size_t n = 0;
for (const int& value : item) {
++n;
if (n != item.size()) {
std::cout << value << ",";
}
else {
std::cout << value;
}
}
std::cout << "}\n";
}
void _p(const lf::_DList<char>& item) {
std::cout << "{";
size_t n = 0;
for (const char& value : item) {
++n;
if (n != item.size()) {
std::cout << '\'' << value << "\',";
}
else {
std::cout << '\'' << value << "\'";
}
}
std::cout << "}\n";
}
void _p(const lf::_DList<wchar_t>& item) {
std::wcout << _t("{");
size_t n = 0;
for (const wchar_t& value : item) {
++n;
if (n != item.size()) {
std::wcout << _t('\'') << value << _t("\',");
}
else {
std::wcout << _t('\'') << value << _t("\'");
}
}
std::wcout << _t("}\n");
}
*/
/
#ifdef _QT_
/// <summary>
///
/// </summary>
/// <param name="pt"></param>
/// <returns></returns>
/// 创建时间: 2025-02-16 最后一次修改时间:2025-02-16
_string QtDateTimeToString(QDateTime* pt) {
_string sResult(_t(""), 30);
sResult.add(_Math::intToStr(pt->date().year(), 4));
sResult.add(_t("/"));
sResult.add(_Math::intToStr(pt->date().month(), 2));
sResult.add(_t("/"));
sResult.add(_Math::intToStr(pt->date().day(), 2));
sResult.add(_t(" "));
sResult.add(_Math::intToStr(pt->time().hour(), 2));
sResult.add(_t(":"));
sResult.add(_Math::intToStr(pt->time().minute(), 2));
sResult.add(_t(":"));
sResult.add(_Math::intToStr(pt->time().second(), 2));
return sResult;
}
/// <summary>
///
/// </summary>
/// 创建时间: 2025-02-16 最后一次修改时间:2025-02-16
class DialogMessage : public QDialog {
public:
DialogMessage(QWidget* parent = nullptr) : QDialog(parent) {}
};
/// <summary>
///
/// </summary>
/// 创建时间: 2025-02-16 最后一次修改时间:2025-02-16
class WidgetMessage : public my_QWidget {
public:
WidgetMessage(QWidget* parent = nullptr) : my_QWidget(parent) {}
protected:
void mousePressEvent(QMouseEvent* event) override {
if (event->button() == Qt::LeftButton) {
// 创建对话框
DialogMessage* dialog = new DialogMessage(this);
dialog->setWindowTitle("Dialog");
QLabel* label = new QLabel("You clicked the left mouse button!", dialog);
QVBoxLayout* layout = new QVBoxLayout(dialog);
layout->addWidget(label);
dialog->setLayout(layout);
// 显示对话框
dialog->exec();
}
}
void paintEvent(QPaintEvent* event) override
{
Q_UNUSED(event);
QPainter painter(this);
// 设置字体
QFont font("Arial", 20);
painter.setFont(font);
// 绘制红色文本
painter.setPen(Qt::red);
painter.drawText(10, 50, "红色文本");
// 绘制蓝色文本
painter.setPen(Qt::blue);
painter.drawText(10, 100, "蓝色文本");
}
};
#endif
_string _tostr(void* pt, const char* sTypeName)
{
_StrA sType = sTypeName;
_string sResult(_t(""), 100);
if (sType == typeid(char*).name() || sType == typeid(const char*).name()) {
char** ppC = ((char**)(pt)); //指向指针的指针
sResult.add(_string::qt_fromUtf8(*ppC));
}
else if (sType == typeid(wchar_t*).name() || sType == typeid(const wchar_t*).name()) {
wchar_t** ppC = ((wchar_t**)(pt)); //指向指针的指针
sResult.add(*ppC);
}
#ifdef _QT_ //---------------------------------------------------------_QT_
else if (sType == typeid(QStringList).name()) {
QStringList* data = (QStringList*)pt;
if (data->size() == 0)
sResult.add(_t("{}"));
else {
sResult.add(_t("{"));
for (int i = 0; i < data->size() - 1; ++i) {
sResult.add(_t("\""));
sResult.add(data->at(i).toStdWString());
sResult.add(_t("\","));
}
sResult.add(_t("\""));
sResult.add(data->last().toStdWString());
sResult.add(_t("\""));
sResult.add(_t("}"));
}
}
else if (sType == typeid(QString).name()) {
sResult.add(_t("\""));
sResult.add((*((QString*)(pt))).toStdWString());
sResult.add(_t("\""));
}
else if (sType == typeid(QDateTime).name()) {
return QtDateTimeToString((QDateTime*)pt);
}
else if (sType == typeid(QFont).name()) {
QFont* pf = (QFont*)(pt);
sResult.add(pf->toString().toStdWString());
}
else if (sType == typeid(QByteArray).name()) {
QByteArray* pb = (QByteArray*)(pt);
sResult.add(_string::fromOnlyData(pb->data(), pb->size()));
}
else if (sType == typeid(QColor).name()) {
QColor* pc = (QColor*)(pt);
//sResult.add(_string::fromOnlyData(pb->data(), pb->size()));
/*
alpha:透明度。
red:红色分量。
green:绿色分量。
blue:蓝色分量。
pad:填充字段。
*/
_Color c;
c._a = pc->alpha();
c._r = pc->red();
c._g = pc->green();
c._b = pc->blue();
sResult.add(c.toString());
}
#endif // ---------------------------------------------------------_QT_
else if (sType == typeid(_StrListW).name()) {
_StrListW* data = (_StrListW*)pt;
if (data->size() == 0)
sResult.add(_t("{}"));
else {
sResult.add(_t("{"));
for (int i = 0; i < data->size() - 1; ++i) {
sResult.add(_t("\""));
sResult.add(data->at(i).qt_toStdWString());
sResult.add(_t("\","));
}
sResult.add(_t("\""));
sResult.add(data->last()->data.qt_toStdWString());
sResult.add(_t("\""));
sResult.add(_t("}"));
}
}
else if (sType == typeid(int).name()) {
int *pNum = ((int*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(float).name()) {
float* pNum = ((float*)(pt));
sResult.add(_Math::doubleToStr(*pNum));
}
else if (sType == typeid(double).name()) {
double *pNum = ((double*)(pt));
sResult.add(_Math::doubleToStr(*pNum));
}
else if (sType == typeid(__int64).name()) {
__int64 *pNum = ((__int64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_byte).name()) {
_byte *pNum = ((_byte*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int8).name()) {
_int8 *pNum = ((_int8*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int16).name()) {
_int16 *pNum = ((_int16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int32).name()) {
_int16 *pNum = ((_int16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_int64).name()) {
_int64 *pNum = ((_int64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint8).name()) {
_uint8 *pNum = ((_uint8*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint16).name()) {
_uint16 *pNum = ((_uint16*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint32).name()) {
_uint32 *pNum = ((_uint32*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(_uint64).name()) {
_uint64* pNum = ((_uint64*)(pt));
sResult.add(_Math::intToStr(*pNum));
}
else if (sType == typeid(std::string).name()) {
std::string* ps = ((std::string*)(pt));
sResult.add(_string::qt_fromStdString(*ps));
}
else if (sType == typeid(std::wstring).name()) {
std::wstring* ps = ((std::wstring*)(pt));
sResult.add(_string::qt_fromStdWString(*ps));
}
else if (sType == typeid(_string).name()) {
_string* ps = ((_string*)(pt));
sResult.add(*ps);
}
else if (sType.indexOf("char const [") != -1) {//char const [9]
const char* ps = (char*)(pt);
sResult.add(_string::qt_fromUtf8(ps));
}
else if (sType.indexOf("wchar_t const [") != -1) {//char const [9]
const wchar_t* ps = (wchar_t*)(pt);
sResult.add(ps);
}
else if (sType == typeid(bool).name()) {
bool* pb = (bool*)(pt);
if (*pb)
sResult.add(_t("true"));
else
sResult.add(_t("false"));
}
else {
sResult.add(sType);
}
return sResult;
}
void _p(void* pt, const char* sTypeName)
{
std::wcout << _tostr(pt, sTypeName).c_str() << "\n";
}
/
void _pb(void* pt, const size_t& nSize)
{
_cout << lf::_Bit((_byte*)(pt), nSize).GetMachineCode(true) << _t("\n");
}
void _ps(void* pt, const char* sTypeName, const lf::_Font& f, const lf::_Color& c)
{
#ifdef _QT_
_string sText = _tostr(pt, sTypeName);
WidgetMessage* w = new WidgetMessage();
QTextEdit* pte = new QTextEdit(sText,w);
pte->setObjectName("pte");
pte->setFont(QFont(f.FamilyName, f.Size));
pte->setStyleSheet(c.toStyleSheet_foregroundColor()); // 设置全局字体颜色为绿色
w->my_resizeEvent = [](QWidget* pw, QResizeEvent* e) {
QTextEdit* pte = pw->findChild<QTextEdit*>("pte");
if(pte != null)
pte->resize(e->size().width(), e->size().height());
};
w->resize(400, 400);
w->show();
#endif
}
#ifdef _QT_
class EventFilter : public QObject {
//Q_OBJECT
protected:
// 重写 eventFilter 函数
bool eventFilter(QObject* obj, QEvent* event) override {
if (event->type() == QEvent::MouseButtonPress) {
QMouseEvent* mouseEvent = (QMouseEvent*)(event);
if (mouseEvent->button() == Qt::LeftButton) {
//qDebug() << "事件过滤器:左键按下,位置:" << mouseEvent->pos();
ga.ShowInfo("ksdf");
}
}
return QObject::eventFilter(obj, event); // 继续传递事件
}
};
#endif
void _ps(void* pt, const char* sTypeName, const _string& sqml)
{
#ifdef _QT_
WidgetMessage* w = new WidgetMessage();
w->setWindowTitle(sqml);
w->resize(400, 800);
w->show();
#endif
}
/
//在窗体上显示内容
/
void _ps(void* pt, const size_t& nSize)
{
}
/
/