Отключить функциональность кнопок (виджеты Wx)

Поэтому я использую фрейм WxDev для разработки GUI нашей программы. Таким образом, он имеет две кнопки "Загрузить" и "Анализ".

Последовательность должна быть загружена пользователем. После загрузки он может нажать кнопку "Анализ". Теперь, когда он нажмет на анализ, я хочу отключить его. Кнопка будет активирована только тогда, когда появится новое изображение для анализа.

Вот код для кнопок, которые у меня есть, хотя это может быть неактуально.

ЗАГРУЗКИ:

void NBA_Jersey_RecognitionFrm::WxButton1Click(wxCommandEvent& event)
{
 openIMGFileDialog->ShowModal();
    if (openIMGFileDialog->GetPath().IsEmpty())
    {
        return;
    }

    imageopen = imgFile.LoadFile(openIMGFileDialog->GetPath(), wxBITMAP_TYPE_ANY);

    int h = imgFile.GetHeight();
    int w = imgFile.GetWidth();

    pic.Create(w,h);

        for (int x = 0; x < w; x++)
        {
             for (int y = 0; y < h; y++)
            {
                pic.SetRGB(x, y, 240, 240, 240);
            }
        }

    if (300 >= (h*300/w))
    {       
        displayIMG->SetBitmap(pic.Scale(300,h*300/w));
        displayIMG->SetBitmap(imgFile.Scale(300,h*300/w));
    } 
    else
    {
        displayIMG->SetBitmap(pic.Scale(w*300/h,300));
        displayIMG->SetBitmap(imgFile.Scale(w*300/h,300));
    }

}

Вот выдержка из моей кнопки АНАЛИЗ:

void NBA_Jersey_RecognitionFrm::WxButton1Click0(wxCommandEvent& event)
{
    ofstream resultsFile;

    stringstream ss;
    string s;

    int height = imgFile.GetHeight();
    int width = imgFile.GetWidth();

    RedVal = new int* [width];
    GreenVal = new int* [width];
    BlueVal= new int* [width];

    for(int i=0; i<width; i++) {
        RedVal[i] = new int[height];
        GreenVal[i] = new int[height];
        BlueVal[i] = new int[height];
    }


    //int RedVal[width][height];
    //int GreenVal[width][height];
    //int BlueVal[width][height];

    resultsFile.open("results.txt");
    //resultsFile << "x,y,Red,Green,Blue \n";


    for(int h=0; h<height; h++) {
        for(int w=0; w<width; w++) {

            RedVal[w][h]=imgFile.GetRed(w,h);
            GreenVal[w][h]=imgFile.GetGreen(w,h);
            BlueVal[w][h]=imgFile.GetBlue(w,h);

            //ss << h << "," << w << "," << RedVal[0][h] << "," << GreenVal[0][h] << "," << BlueVal[0][h] <<"\n";
            //resultsFile << ss.str();
            //resultsFile << h << "," << w << "," << RedVal[w][h] << "," << GreenVal[w][h] << "," << BlueVal[w][h] <<"\n";
        }

    }

Есть ли в WxDev C++ встроенная функция отключения кнопки? Или что мне добавить в код, который у меня есть? Спасибо.

1 ответ

Решение

Вы можете отключить кнопку (и большинство элементов управления) следующим образом:

void NBA_Jersey_RecognitionFrm::WxButton1Click0(wxCommandEvent& event)
{
    m_analyzeButton->Enable(false);
    ...

Затем, чтобы снова включить его:

void NBA_Jersey_RecognitionFrm::WxButton1Click(wxCommandEvent& event)
{
 openIMGFileDialog->ShowModal();
    if (openIMGFileDialog->GetPath().IsEmpty())
    {
        return;
    }
    m_analyzeButton->Enable(true);
    ...

Замените "m_analyzeButton" своим именем для кнопки.

Другие вопросы по тегам