尝试隐藏时,FLTK弹出对话框会挂起

时间:2014-01-07 12:59:11

标签: c++ user-interface callback fltk

我为我的应用程序创建了一个名为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();
}
};

0 个答案:

没有答案