gpt4 book ai didi

c++ - 需要调用 gtk_init 函数,但不是从主函数调用 - C++

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

我正在使用 GTK3 来创建一些东西。在教程中有

#include <gtk/gtk.h>
int main(int argc, char* argv[])
{
GtkWidget *window;
gtk_init(&argc, &argv);

gtk_window, gtk_container etc...

我想创建 MainProgram 来处理这个 main 函数之外的绘图。所以我删除了上面的代码并制作了一个新的:

主要.cpp

#include "MainProgram.h"
int main(int argc, char* argv[])
{
MainProgram mainProgram;
mainProgram.run(); // the magic is now happening inside this run method

主程序.h

#include <gtk/gtk.h>
#include "MainProgram.h"
class MainProgram
{
public:
MainProgram();
~MainProgram();

void run();

void initSystems();
...other not so important code goes inside

最后,MainProgram.cpp

#include "MainProgram.h"

MainProgram::MainProgram()
{
...
}

MainProgram::~MainProgram(){}


void MainProgram::run()
{
// about that magic we were talking about
initSystems();
}

void MainProgram::initSystems(){

gtk_init(&argc, &argv); // here it is.

_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_position(GTK_WINDOW(_window), GTK_WIN_POS_CENTER);
gtk_window_set_default_size(GTK_WINDOW(_window), _screenWidth, _screenHeigth);
gtk_window_set_title(GTK_WINDOW(_window), "Fill & stroke");
// ************** FIX OF THE PROBLEM
gtk_widget_show_all(_window); // DIDNT CALL
gtk_main(); // These two functions
}

现在当我尝试编译程序时:

g++ main.cpp MainProgram.cpp `pkg-config --cflags --libs gtk+-3.0`

我收到以下警告:

MainProgram.cpp: In member function ‘void MainProgram::initSystems()’:
MainProgram.cpp:22:12: error: ‘argc’ was not declared in this scope
gtk_init(&argc, &argv);
^
MainProgram.cpp:22:19: error: ‘argv’ was not declared in this scope
gtk_init(&argc, &argv);

有没有一种简单的方法可以从 main.cpp 中的 main 函数传递这些地址?我这样做是为了让我的代码看起来更清晰,并尽量不让 main.cpp 文件过载:)

最佳答案

我忘了放两个函数来显示我的应用程序,你可以在 MainProgram.cpp 文件中看到,我做了标记。它在那个"file"中的最后几行。

关于c++ - 需要调用 gtk_init 函数,但不是从主函数调用 - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44425758/

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