我已經和關閉學習FLTK在過去幾天的分配值,但今天我來到這裏我很爲難的點。中添加和FLTK
這裏的程序應該如何工作。有兩個按鈕:but1
,but2.
其中每個按鈕都在其旁邊有一個輸入小部件。底部還有一個輸出小部件。 按下按鈕會將相應的輸入發送到輸出字段,並將其添加到當前顯示的值中。
我無法搞清楚如何,因爲顯然他們存儲爲字符串添加兩個控件的值。我想出了一個想法通過首先將輸入值到int,然後將它添加到一個稱爲變量「sum
」(其值是0最初),將其轉換回串(ssum
),然後纔將其分配給繞過這個輸出作爲其值。但是,它顯然超載了該功能。我不知道我做錯了什麼,因爲inp->value()
在那裏工作正常。
我該怎麼做?有沒有更好的方法將其他地方存儲的值分配給小部件?或者,也許有一種直接的方式來添加小部件的值?
這裏是整個代碼:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Widget.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
#include <string>
using namespace std;
Fl_Output* out;
int sum=0;
char ssum;
void cb_send(Fl_Widget* w, void *v)
{
if (((Fl_Button*)w)->value() == 0)
{
w->hide();
Fl_Input* inp = (Fl_Input*)v;
sum = sum + atoi(inp->value());
ssum = sum;
out->value(ssum);
//out->value(inp->value()); this works
//out->value(out->value() + inp->value()); this should theoretically work?
}
}
int main(int argc, char **argv)
{
Fl_Window *winmain = new Fl_Window(500, 500);
Fl_Button *but1 = new Fl_Button(100, 100, 50, 50, "1");
Fl_Button *but2 = new Fl_Button(100, 200, 50, 50, "2");
Fl_Input *no1 = new Fl_Input(170, 100, 150, 50, "");
Fl_Input *no2 = new Fl_Input(170, 200, 150, 50, "");
out = new Fl_Output(170, 300, 150, 50, "");
but1->callback((Fl_Callback*) cb_send, no1);
but2->callback((Fl_Callback*) cb_send, no2);
winmain->resizable();
winmain->end();
winmain->show(argc, argv);
return Fl::run();
}
好的,我知道了。沒有必要添加字符串。我可以使用Fl_Value_Input來代替,並且一切正常。 –