我为我的应用程序创建了一个名为ApplicationManager的弹出窗口。这是一个简单的输入对话框,等待用户输入10秒。如果未输入任何值,则弹出窗口将关闭。我已经让这部分工作了。现在我正在努力应对更简单的部分。当在输入中输入任何数据并按下确定时,该对话框应该再次关闭。但是在this->hide()
handleCall
中,即使代码继续进行,GUI也会挂起。
class Popup : public Fl_Window {
private:
Fl_Input *input;
Fl_Button *okBtn;
Fl_Button *cancelBtn;
std::string barcode;
void handleCall(Fl_Widget* w) {
Fl_Button *b = (Fl_Button*)w;
if(b->label() == "OK") {
barcode = input->value();
}
std::cout << b->label() << " " << input->value() << std::endl;
this->hide();
}
static void callBk(Fl_Widget* w, void* p){
Popup *pop = (Popup*)p;
pop->handleCall(w);
}
public:
Popup() : Fl_Window(400,120, "Manual Barcode") {
Fl_Input *label = new Fl_Input(250, 25, 0, 0, "Enter Barcode Manually");
input = new Fl_Input(75, 45, 300, 25);
okBtn = new Fl_Button(235, 85, 50, 25, "OK");
okBtn->callback((Fl_Callback*)callBk, this);
cancelBtn = new Fl_Button(300, 85, 75, 25, "Cancel");
cancelBtn->callback((Fl_Callback*)callBk, this);
end();
barcode = "";
}
void pop() {
std::cout << "showing popup" << std::endl;
//Fl::add_timeout(12, hidePopup, (void*)this);
this->show();
}
};