带有 gtkmm 派生小部件的空白窗口
Blank window with gtkmm derived widget
我目前正在用 c++ 编写一个小桌面应用程序,这是我第一次使用 gtkmm。
我从这里学习了教程,但我得到的只是一个空白窗口。它在将 MainWindow 重新制造为自己的类之前就已经工作了......
请注意:我省略了包含、使用和信号处理程序实现。
这是我的主要功能:
int main(int argc, char **argv)
{
RefPtr<Application> app = Application::create(argc, argv, "org.mw88.adbtool");
//Main kit(argc, argv);
RefPtr<Builder> builder = Builder::create();
try
{
builder->add_from_file("Gui.glade");
MainWindow *window = NULL;
builder->get_widget_derived("MainWindow", window);
app->run(*window);
//kit.run(*window);
}
catch (const FileError& ex)
{
cerr << "FileError: " << ex.what() << endl;
return EXIT_FAILURE;
}
catch (const MarkupError& ex)
{
cerr << "MarkupError: " << ex.what() << endl;
return EXIT_FAILURE;
}
catch (const BuilderError& ex)
{
cerr << "BuilderError: " << ex.what() << endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
My MainWindow-header:
class MainWindow : public Window
{
public:
MainWindow(BaseObjectType* cobject, const RefPtr<Builder>& refBuilder);
virtual ~MainWindow();
void show(RefPtr<Application> &app);
private:
RefPtr<Builder> builder;
ToolButton *addButton;
ToolButton *editButton;
ToolButton *deleteButton;
ToolButton *connectButton;
TreeView *hostList;
RefPtr<ListStore> listStore;
Columns cols;
//Signal handlers:
virtual void onAddClicked();
virtual void onEditClicked();
virtual void onDeleteClicked();
virtual void onConnectClicked();
};
这是 MainWindow 类的构造函数:
MainWindow::MainWindow(BaseObjectType* cobject, const RefPtr<Builder>& refBuilder)
{
this->builder = refBuilder;
addButton = NULL;
editButton = NULL;
deleteButton = NULL;
connectButton = NULL;
hostList = NULL;
builder->get_widget("hostList", hostList);
builder->get_widget("addButton", addButton);
addButton->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::onAddClicked));
builder->get_widget("editButton", editButton);
editButton->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::onEditClicked));
builder->get_widget("deleteButton", deleteButton);
deleteButton->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::onDeleteClicked));
builder->get_widget("connectButton", connectButton);
connectButton->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::onConnectClicked));
hostList->set_model(listStore = ListStore::create(cols));
hostList->append_column("Host", cols.host);
hostList->append_column("Port", cols.port);
for (int i = 0; i < 20; i++)
{
TreeModel::Row row = *(listStore->append());
row[cols.host] = "Testhost";
row[cols.port] = i;
}
show_all_children();
}
似乎所有小部件都从构建器正确返回,但应用程序>运行仅显示一个空窗口。可能是什么原因呢?
你的构造函数不完整,你需要用cObject初始化基类:
MainWindow::MainWindow(BaseObjectType* cobject, const RefPtr<Builder>& refBuilder)
: Gtk::Window(cObject) // add this
{
this->builder = refBuilder;
...
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 无法通过空白将文本文件行分隔为矢量
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- Gtkmm 窗口为空白,不显示任何小部件或标题
- 我的QT程序显示带有标题的空白窗口
- QT子类UI表单显示一个空白窗口
- SDL 窗口弹出,但它是空白的,完全没有响应
- 输入层类型:图像数据在窗口咖啡cpp中给出空白输出
- QT 4.7-在OS X 10.12下,工具提示和Qcombobox弹出窗口空白
- 带有 gtkmm 派生小部件的空白窗口
- 将QT QML应用程序部署到Windows上显示了一个空白窗口
- GLUT显示空白窗口
- 程序运行时出现空白窗口
- 从代码::块运行程序时,控制台窗口为空白
- Gtk::Window set_visible导致一个空白窗口
- 记住创建空白win32窗口的所有内容很重要吗?
- 尝试在打开的总账中创建空白窗口时出现异常输出
- Qt Maps (QML)应用程序窗口是空白的
- 空白窗口