国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

C++輕量級跨平臺桌面GUI庫FLTK的簡單使用

這篇具有很好參考價值的文章主要介紹了C++輕量級跨平臺桌面GUI庫FLTK的簡單使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

C++的跨平臺桌面GUI庫有很多,大體上分成兩種流派:retained mode和immediate mode。

  • 其中前者是主流的桌面GUI機制框架,包括:Qt、wxwidgets、gtk、juce等
  • 后者是一些游戲引擎編輯器常用的GUI機制框架,包括:imgui、nanogui等

使用這些框架都支持構(gòu)建在windows、mac、linux上面能運行的桌面圖形界面程序。
但如果在開發(fā)小工具項目,要求跨平臺、開源免費、協(xié)議友好、性能高、輕量級的需求,這里推薦FLTK庫(https://www.fltk.org/),只需要作為一個依賴庫的方式引入工程即可。

以下是一個使用FLTK開發(fā)的簡單demo代碼示例,功能是顯示一個編輯框和一個按鈕,點擊按鈕刷新編輯框的數(shù)字。

項目結(jié)構(gòu)

fltk_demo
	- fltk-1.3.8
	- src
	  |- main.cpp
	- CMakeLists.txt

CMakeLists.txt

cmake_minimum_required(VERSION 3.0)

project(fltk_demo)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if (WIN32)
    set(CMAKE_EXE_LINKER_FLAGS "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup") # do not pop out console for release
endif()

if (WIN32)
    add_definitions(
        -D_CRT_SECURE_NO_WARNINGS
        -D_WINSOCK_DEPRECATED_NO_WARNINGS
    )
endif()

add_subdirectory(fltk-1.3.8)

include_directories(fltk-1.3.8)

file(GLOB SRC
    src/*.h
    src/*.cpp
)

add_executable(${PROJECT_NAME} ${SRC})

# both win and linux use the same lib name
target_link_libraries(${PROJECT_NAME}
    fltk
)

main.cpp

#include <iostream>
#include <string>
#include "FL/Fl.H"
#include "FL/Fl_Window.H"
#include "FL/Fl_Box.H"
#include "FL/Fl_Input.H"
#include "FL/Fl_Button.H"

class MyWindow : public Fl_Window
{
public:
	MyWindow(int w, int h, const char* title) : Fl_Window(w, h, title)
	{}

	void init()
	{
		std::cout << "MyWindow init" << std::endl;

		// ui
		begin();

		color(FL_DARK3);

		int y = 10;
		s_input = new Fl_Input(150, y, 100, 20, "Number:");
		s_input->static_value(s_num_str.c_str()); // set init text

		y += 30;
		Fl_Button* add_button = new Fl_Button(150, y, 60, 30, "Add Num");
		resizable(add_button);
		add_button->callback(handleAddButtonClick);

		end();
	}

	static void handleAddButtonClick(Fl_Widget* widget, void* v)
	{
		std::cout << "MyWindow handleAddButtonClick" << std::endl;

		// update text
		int num = atoi(s_num_str.c_str());
		num++;
		s_num_str = std::to_string(num);

		std::cout << "add num to " << num << std::endl;
		s_input->static_value(s_num_str.c_str());
		s_input->redraw();
	}

private:
	static Fl_Input* s_input;
	static std::string s_num_str;
};

Fl_Input* MyWindow::s_input = nullptr;
std::string MyWindow::s_num_str = "0";

#include <string>
#include <algorithm>

int main(int argc, char** argv)
{

	MyWindow* my_window = new MyWindow(400, 300, "MyWindow");
	my_window->init();
	my_window->show();

	return Fl::run();
}

其中

  • cmake配置里面需要增加編譯選項,可以避免界面啟動后彈出控制臺黑框,如果作為debug階段可以保留
  • 控件綁定的回調(diào)函數(shù)必須是全局或者靜態(tài)函數(shù)

效果
C++輕量級跨平臺桌面GUI庫FLTK的簡單使用
源碼
https://download.csdn.net/download/u012234115/87878308文章來源地址http://www.zghlxwxcb.cn/news/detail-474885.html

到了這里,關(guān)于C++輕量級跨平臺桌面GUI庫FLTK的簡單使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Gitea:輕量級、開源的Git倉庫管理平臺

    Gitea是一款開源的、基于Go語言編寫的輕量級Git服務(wù)器。它提供了類似于GitHub的功能,如代碼托管、版本控制、團隊協(xié)作等,但更加輕便和易于部署。Gitea的設(shè)計初衷是為了讓團隊或個人能夠更方便地管理和分享自己的代碼,同時不需要花費大量的資源和精力去搭建和維護一個

    2024年04月23日
    瀏覽(21)
  • Go 跨平臺GUI框架fyne 中文文檔1 開始

    Go 跨平臺GUI框架fyne 中文文檔1 開始

    Fyne (go 跨平臺 GUI ) 入門中文文檔1開始 hello word A simple app starts by creating an app instance with app.New() and then opening a window with app.NewWindow(). Then a widget tree is defined that is set as the main content with SetContent() on a window. The app UI is then shown by calling ShowAndRun() on the window. 一個簡單的應用程序首先

    2024年02月13日
    瀏覽(26)
  • C++輕量級單元測試框架

    單元測試是構(gòu)建穩(wěn)定、高質(zhì)量的程序、服務(wù)或系統(tǒng)的必不可少的一環(huán)。通過單元測試,我們可以在開發(fā)過程中及時發(fā)現(xiàn)和修復代碼中的問題,提高代碼的質(zhì)量和可維護性。同時,單元測試也可以幫助我們更好地理解代碼的功能和實現(xiàn)細節(jié),從而更好地進行代碼重構(gòu)和優(yōu)化。

    2023年04月25日
    瀏覽(89)
  • 我想開發(fā)一款跨平臺桌面軟件,請告訴我qt、electron、tauri、pyqt、flutter分別適合開發(fā)哪些跨平臺桌面

    我想開發(fā)一款跨平臺桌面軟件,請告訴我qt、electron、tauri、pyqt、flutter分別適合開發(fā)哪些跨平臺桌面

    不同的跨平臺桌面開發(fā)工具適用于不同的應用場景和開發(fā)者需求。以下是關(guān)于 Qt、Electron、Tauri、PyQt、Flutter 的簡要說明,以幫助你更好地選擇適合你項目的工具: Qt: 適用場景: Qt 是一個強大的 C++ 框架,適用于開發(fā)需要高性能和原生外觀的桌面應用。它具有廣泛的平臺支持

    2024年02月22日
    瀏覽(95)
  • 推薦一款輕量級全棧式開源測試平臺!

    推薦一款輕量級全棧式開源測試平臺!

    1、RunnerGo介紹 今天給大家介紹一個好用的測試平臺:RunnerGo(開源)。RunnerGo是一款輕量級、全棧式的測試平臺,支持接口管理、場景管理、性能測試、自動化測試等功能。與市面上的性能測試工具不同的是RunnerGo基于go語言研發(fā),更加輕量級。? ? ? ? ?? 附上官網(wǎng)和開源鏈

    2024年02月12日
    瀏覽(31)
  • 跨平臺桌面端框架wails 修改默認圖標

    跨平臺桌面端框架wails 修改默認圖標

    博主開發(fā)了一個瀏覽器aweb123.com 執(zhí)行 wails build就會自動生成新的圖標

    2024年02月07日
    瀏覽(167)
  • Golang WebView:打造跨平臺的桌面應用

    隨著互聯(lián)網(wǎng)的發(fā)展和智能設(shè)備的普及,Web應用成為了主流的應用開發(fā)方式之一。然而,有些場景下仍然需要使用桌面應用來滿足特定的需求。為了結(jié)合Web技術(shù)和桌面應用的優(yōu)勢,Golang提供了一種名為\\\"WebView\\\"的庫,它可以幫助開發(fā)人員快速構(gòu)建跨平臺的桌面應用。本文將介紹

    2024年02月22日
    瀏覽(26)
  • 輕量級虛擬桌面基礎(chǔ)架構(gòu)(VDI) 從任何地方和任何設(shè)備進行安全快速訪問,為混合云環(huán)境啟用遠程工作

    輕量級虛擬桌面基礎(chǔ)架構(gòu)(VDI) 從任何地方和任何設(shè)備進行安全快速訪問,為混合云環(huán)境啟用遠程工作 交付具有成本效益且可擴展的 VDI 保證安全快速的虛擬應用程序和虛擬桌面 保護知識產(chǎn)權(quán) 支持全球合作 許多企業(yè)擁有混合計算基礎(chǔ)架構(gòu),其中某些應用程序已遷移到云中,而

    2024年02月03日
    瀏覽(24)
  • Qat++,輕量級開源C++ Web框架

    Qat++,輕量級開源C++ Web框架

    目錄 一.簡介 二.編譯Oat++ 1.環(huán)境 2.編譯/安裝 三.試用 1.創(chuàng)建一個 CMake 項目 2.自定義客戶端請求響應 3.將請求Router到服務(wù)器 4.用瀏覽器驗證 Oat++是一個面向C++的現(xiàn)代Web框架 官網(wǎng)地址:https://oatpp.io github地址:https://github.com/oatpp/oatpp Oat++具有如下特性: ●隨處運行 Oat++沒有任何

    2024年02月01日
    瀏覽(109)
  • 智能制造之路—從0開始打造一套輕量級MOM平臺

    智能制造之路—從0開始打造一套輕量級MOM平臺

    一、概述 面對數(shù)字化浪潮,MOM需求邁入上升期,數(shù)字化從“可選項”變成了企業(yè)競爭“必選項”。制造行業(yè)每個工廠的生產(chǎn)邏輯都不盡相同,流程的梳理、數(shù)據(jù)統(tǒng)一化都需要調(diào)配很長時間。 對于制造企業(yè)來說一套快速構(gòu)建業(yè)務(wù)的平臺,看起來是解決制造行業(yè)“每個工廠生產(chǎn)

    2024年02月16日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包