gpt4 book ai didi

c++ Gtkmm TextBuffer 和 TextView 段错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:38:39 25 4
gpt4 key购买 nike

我正在学习 C++ 和 Gtk+ GUI 我是新手,我找不到好的教程,我遇到过这个问题所以我会在这里写一个问题。

当我点击更新按钮时出现这个错误:

段错误

下面有一张图片解释了我的问题。


我做错了什么吗?

#include <iostream>
#include <gtkmm-3.0/gtkmm.h>

using namespace std;

Gtk::Window* window = 0;
Gtk::TextView* textview = 0;
Glib::RefPtr<Gtk::TextBuffer> text;
static void quit();
static void update();

int main(int argc, char *argv[])
{
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create(argc, argv, "org.gtkmm.example");

//Load the GtkBuilder file and instantiate its widgets:
Glib::RefPtr<Gtk::Builder> refBuilder = Gtk::Builder::create();
try {
refBuilder->add_from_file("window.glade");
}

catch(const Glib::FileError& ex) {
std::cerr << "FileError: " << ex.what() << std::endl;
return 1;
}

catch(const Glib::MarkupError& ex) {
std::cerr << "MarkupError: " << ex.what() << std::endl;
return 1;
}

catch(const Gtk::BuilderError& ex) {
std::cerr << "BuilderError: " << ex.what() << std::endl;
return 1;
}

//Get the GtkBuilder-instantiated Window:
refBuilder->get_widget("window1", window);

if(window) {

window->set_title("GUI");
window->set_size_request(600, 400);
window->set_resizable(false);

text = Gtk::TextBuffer::create();
text->set_text("123");

Gtk::Button* uButton = 0;
refBuilder->get_widget("button2", uButton);
if(uButton) {
uButton->signal_clicked().connect(sigc::ptr_fun(update));
}

Gtk::Button* qButton = 0; // Quit button

refBuilder->get_widget("button1", qButton);
if(qButton) {
qButton->signal_clicked().connect(sigc::ptr_fun(quit));
}

app->run(*window);
}

delete window;

return 0;
}

static void quit() {
if(window) window->hide(); //hide() will cause main::run() to end.
}

static void update() {
textview->set_buffer(text);
}

enter image description here

最佳答案

你开始于

Gtk::TextView* textview = 0;

稍后你会:

textview->set_buffer(text);

也许我错过了什么,但我没有看到您将 textview 指向实际的 textview 对象。我希望是这样的:

 refBuilder->get_widget("???", textview );

在初始化期间。

此外,您应该使用 nullptr 而不是 0。或者 NULL 假设您不使用 c++11

关于c++ Gtkmm TextBuffer 和 TextView 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22281698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com