首页 > 解决方案 > wxFilePickerCtrl 设置路径后未实现小部件

问题描述

我遇到了 wxFilePickerCtrl 的问题。我尝试使用 SetPath() 方法设置路径,但它不起作用,路径已设置,因为我可以从 GetPath() 获取它,但小部件仍显示路径(无)。

这是我的代码(简化为两个类)。你知道我该怎么做吗?我从文档中尝试了不同的 wxFilePickerCtrl 方法,但结果是一样的。

主.hpp:

#ifndef MAIN_HPP
#define MAIN_HPP

#include <wx/wx.h>

#include "panel.hpp"

    class MyApp : public wxApp
    {
        public:
            bool OnInit();

        private:
            Panel* _panel;
    };

#endif

主.cpp:

#include "main.hpp"

wxIMPLEMENT_APP(MyApp)

bool MyApp::OnInit()
{
    _panel = new Panel();
    _panel->Show(true);
    return true;
}

面板.hpp:

#ifndef PANEL_HPP
#define PANEL_HPP

#include <wx/wx.h>
#include <wx/filepicker.h>    

class Panel : public wxFrame
{
    public:
        Panel();

    private:
        wxFilePickerCtrl* _filePicker;
        wxBoxSizer* _sizer;
};      

#endif

面板.cpp:

#include "panel.hpp"

Panel::Panel() : wxFrame(NULL, wxID_ANY, "MyApp", wxDefaultPosition, wxSize(850, 450))
{
    _sizer = new wxBoxSizer(wxVERTICAL);
    _filePicker = new wxFilePickerCtrl(this, wxID_ANY, "filePicker");
    sizer->Add(_filePicker, 2, wxALIGN_CENTER, 2);
    //file does not matter so in examplie I tried to set to main.cpp
    _filePicker->SetPath("/some_path/main.cpp"); 
    this->SetSizer(_sizer);
    this->Centre();
}

标签: c++wxwidgets

解决方案


这是一个 GTK 限制,它仅显示此控件中现有文件的名称(因此,如果您/some_path/main.cpp确实存在,这应该可以工作)。GtkFileChooserButton如果文件名不存在,我看不到任何显示文件名的方法,所以不幸的是,我认为这无法修复。

一般来说,这个控件确实应该用于加载 GTK 中的现有文件。


推荐阅读