gpt4 book ai didi

c++ - 网格中的 GTKMM 按钮

转载 作者:行者123 更新时间:2023-11-30 05:43:25 25 4
gpt4 key购买 nike

刚刚学习了 GTKMM 的概念,发现我很喜欢这个,与仅 C++ 相比,后者只是在终端中编程非常无聊。当我决定创建一个代码来制作一个 8 x 8 的表格按钮时,我遇到了一个问题,即如何将每个按钮设置到我想要的位置,因为我创建的代码只是水平制作了 64 个按钮。有人能帮我一下吗?谢谢

examplewindow.h(类属性和方法的代码)

#ifndef GTKMM_EXAMPLEWINDOW_H
#define GTKMM_EXAMPLEWINDOW_H

#include <gtkmm.h>

class ExampleWindow : public Gtk::Window
{
public:
ExampleWindow();
virtual ~ExampleWindow();

private:
// Signal handlers:
void on_button_numbered(const Glib::ustring& data);

// Child widgets:
Gtk::Grid m_grid;
Gtk::Button button[8][8];
};

#endif /* GTKMM_EXAMPLEWINDOW_H */

examplewindow.cc(修改属性和方法的代码)

#include <iostream>
#include "examplewindow.h"

ExampleWindow::ExampleWindow()
{
set_title("Mr. Sandman");
set_border_width(12);
int i, j;
add(m_grid);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
m_grid.add(button[i][j]);
}
}

for (int i = 0; i < 8; i++)
{
for (j = 0; j < 8; j++)
{
button[i][j].signal_clicked().connect(
sigc::bind<Glib::ustring>( sigc::mem_fun(*this,
&ExampleWindow::on_button_numbered), "button 1") );
}
}
m_grid.show_all();
}

ExampleWindow::~ExampleWindow()
{
}


void
ExampleWindow::on_button_numbered(const Glib::ustring& data)
{
std::cout << data << " was pressed" << std::endl;
}

main.cc(主函数)

#include "examplewindow.h"
#include <gtkmm/application.h>

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

ExampleWindow window;

// Shows the window and returns when it is closed.
return app->run(window);
}

最佳答案

尝试使用 attach()attach_next_to() 而不是使用 m_Grid.add()

因此您可以在循环中给出行/列位置,或者将按钮 9 附加到按钮 1 下方并将按钮 2 附加到按钮 1 右侧

https://developer.gnome.org/gtkmm/unstable/classGtk_1_1Grid.html#a9c425e95660daff60a77fc0cafc18115

关于c++ - 网格中的 GTKMM 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30205808/

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