// StellarX 星垣GUI框架 - 测试用例 #include"StellarX.h" #define KEY 4 #if 1 == KEY int main() { //StellarX::SxLogger::setGBK(); //StellarX::SxLogger::Get().enableFile("stellarx.log", false, 1024); StellarX::SxLogger::Get().enableConsole(true); StellarX::SxLogger::Get().setMinLevel(StellarX::SxLogLevel::Debug); // Info/Debug/Trace 自己切 StellarX::SxLogger::Get().setLanguage(StellarX::SxLogLanguage::ZhCN); // ZhCN / EnUS Window mainWindow(1200, 400, 1, RGB(255, 0, 0), "StellarX Hello"); auto table = std::make_unique(200, 50); Table* table_ptr = table.get(); table->setHeaders({ "name","age","seorc","home" }); table->setData({ {"zhangsan","20","99.99","wadsacafadsawd"}, {"lisi","20","99.99","wadsacafadsawd"}, {"wangwu","20","99.99","wadsacafadsawd"}, {"zhaoliu","20","99.99","wadsacafadsawd"}, {"1","20","99.99","wadsacafadsawd" }, {"2","20","99.99","wadsacafadsawd" } , {"3","20","99.99","wadsacafadsawd" } , {"4","20","99.99","wadsacafadsawd" }, {"5","20","99.99","wadsacafadsawd" } , {"6","20","99.99","wadsacafadsawd" } , {"7","20","99.99","wadsacvvvvvvv我afads" } , {"8","2000000000000000000","99.999999999999","wadsacafa0000000d0000000sawd" } , {"9555555555","2000","99.9999999","wadsacafadsawd" } }); table->setRowsPerPage(4); table->setTableBorderWidth(1); table->textStyle.color = RGB(255, 0, 0); table->setTableBorder(RGB(255, 0, 0)); table->setTableFillMode(StellarX::FillMode::Null); auto but = std::make_unique
(240, 470); auto tablePtr = table.get(); tablePtr->setHeaders({ "编号", "名称", "状态", "备注" }); tablePtr->setData({ {"01", "顶部按钮覆盖测试", "待验证", "快速 Hover 后不能残留高亮"}, {"02", "页签切换测试", "待验证", "页签按钮与页内容不应穿透"}, {"03", "分页按钮测试", "待验证", "被非模态部分覆盖时仍应稳定"}, {"04", "模态 Resize 测试", "待验证", "拖窗后标题、关闭按钮不应残影"}, {"05", "关闭后 Hover 恢复", "待验证", "模态关闭后底层按钮 Hover 应恢复"} }); tablePtr->setRowsPerPage(2); tablePtr->setTableBorderWidth(1); tablePtr->setTableBorder(RGB(60, 90, 120)); tablePtr->setTableFillMode(StellarX::FillMode::Null); tablePtr->setLayoutMode(StellarX::LayoutMode::AnchorToEdges); tablePtr->setAnchor(StellarX::Anchor::Left, StellarX::Anchor::Right); const std::string asyncText = "KEY4 非模态回归测试正在进行。\n" "请依次检查以下场景:\n" "1. 在顶部按钮之间快速来回移动鼠标。\n" "2. 切换页签,并在页签按钮与页内按钮上快速 Hover。\n" "3. 将鼠标移动到表格分页按钮附近,观察是否闪烁或穿透。\n" "4. 将鼠标移出窗口后再移回窗口。\n" "5. 保持本对话框打开,确认它始终位于最上层。\n" "6. 若需要重复测试,可直接再次点击右上角按钮。\n" "7. 本对话框故意较高,以覆盖顶部按钮、页签区与部分分页区。\n" "8. 顶部按钮区域用于检测快速 Hover 残留。\n" "9. 页签区域用于检测被遮挡时的切换与 Hover。\n" "10. 表格分页区用于检测分页按钮被部分覆盖时的重绘。\n" "11. 若关闭本对话框,请观察底层 Hover 是否立即恢复。\n" "12. 本消息框保留较多行,是为了增大对遮挡场景的覆盖范围。"; const std::string modalText = "KEY4 模态回归测试。\n" "请在本对话框保持打开时执行:\n" "1. 拖拽窗口大小,观察标题、关闭按钮与功能按钮是否残影。\n" "2. 拖拽后点击关闭按钮。\n" "3. 拖拽后点击功能按钮。\n" "4. 对话框关闭后,将鼠标停在底层顶部按钮上,观察 Hover 是否恢复。"; openAsyncButtonPtr->setOnClickListener([&win, asyncText]() { StellarX::MessageBox::showAsync( win, asyncText, "KEY4 非模态综合回归", StellarX::MessageBoxType::YesNoCancel, [](StellarX::MessageBoxResult result) { SX_LOGI("KEY4") << "非模态对话框结果=" << (int)result; }); }); openModalButtonPtr->setOnClickListener([&win, modalText]() { auto result = StellarX::MessageBox::showModal( win, modalText, "KEY4 模态综合回归", StellarX::MessageBoxType::OKCancel); SX_LOGI("KEY4") << "模态对话框结果=" << (int)result; }); win.addControl(std::move(infoPanel)); win.addControl(std::move(hoverCanvas)); win.addControl(std::move(tabControl)); win.addControl(std::move(table)); win.draw(); return win.runEventLoop(); } #endif #if 2 == KEY // 本工具基于 StellarX 构建,轻量级的 Windows GUI 框架。 #include"StellarX.h" #include #include #include auto blackColor = RGB(202, 255, 255); char initData[33] = "00000000000000000000000000000000";//初始数据 bool gSigned = false; //是否为有符号数 int main() { StellarX::SxLogger::Get().enableConsole(true); StellarX::SxLogger::Get().setMinLevel(StellarX::SxLogLevel::Debug); // Info/Debug/Trace 自己切 StellarX::SxLogger::Get().setLanguage(StellarX::SxLogLanguage::ZhCN); // ZhCN / EnUS Window mainWindow(700, 510, 1, RGB(255, 255, 255), "寄存器查看工具 V1.0——我在人间做废物 (同类工具定制:3150131407(Q / V))"); //选择区控件 auto selectionAreaLabel = std::make_unique