Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/25: Рейтинг темы: голосов - 25, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 18.07.2023
Сообщений: 12

Как сделать кнопку?

23.08.2023, 23:42. Показов 6959. Ответов 58
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
То есть чтоб когда мышкой наводишься на определенную область например где текст, и нажимаешь на нее, то происходят определенные действия
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.08.2023, 23:42
Ответы с готовыми решениями:

как сделать свою кнопку
для курсового проекта мне нужно внедрить браузер в форму и сделать пару кнопок(типа вперед,назад) чтобы все работало,это я сделал с помощью...

Как в visual studio 10 сделать кнопку на форме?
сделал форму в visual studio 10.а как сделать пару кнопок?

После нажатия на кнопку TBitBtn сделать кнопку не действующей
Как после нажатия на кнопку bitbtn1 кнопка становилась не действушей

58
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.08.2023, 15:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Наталья8 Посмотреть сообщение
Лучше под винду хорошо
лучше быть здоровым и богатым, чем больным и нищим...
все мы за мир и за всё хорошее...
всё это общие фразы и пожелания.
1
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
24.08.2023, 15:59
Вот примерчик под винду.
Набором флагов, выбираеться любое условие удаления.
Папка, или файл, всё равно...
(Заменить переносимым кодом будет геморрой, если это вообще возможно)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//============================================
void cool_deleter(std::wstring patch){
    //====================
    wchar_t *From = new wchar_t[patch.length() + 2];
    wmemcpy(From, patch.c_str(), wcslen(patch.c_str()));
    From[patch.size()] = '\0'; From[patch.size() + 1] = '\0';
    //====================
    SHFILEOPSTRUCT op;
    ZeroMemory(&op, sizeof(op));
    op.wFunc = FO_DELETE;//  FO_MOVE || FO_DELETE || FO_RENAME
    op.pFrom = From;
    op.pTo = NULL;
    op.fFlags = FOF_NOERRORUI | FOF_NOCONFIRMATION | FOF_ALLOWUNDO;// Тихо и в корзину
 
    /*
    FOF_ALLOWUNDO Если возможно, сохраняет информацию для возможности UnDo.(В корзину)
    FOF_FILESONLY Если в поле pFrom установлено *.*, то операция будет производиться только с файлами.
    FOF_MULTIDESTFILES Указывает, что для каждого исходного файла в поле pFrom указана своя директория - адресат.
    FOF_NOCONFIRMATION Отвечает "yes to all" на все запросы в ходе опеации.
    FOF_NOCONFIRMMKDIR Не подтверждает создание нового каталога, если операция требует, чтобы он был создан.
    FOF_RENAMEONCOLLISION В случае, если уже существует файл с данным именем, создается файл с именем "Copy #N of..."
    FOF_SILENT Не показывать диалог с индикатором прогресса.
    FOF_NOERRORUI Do not display a dialog to the user if an error occurs
    FOF_SIMPLEPROGRESS Показывать диалог с индикатором прогресса, но не показывать имен файлов.
    FOF_WANTMAPPINGHANDLE Вносит hNameMappings элемент. Дескриптор должен быть освобожден функцией SHFreeNameMappings.
    */
    if (SHFileOperation(&op) == 0){ Beep(4000, 5); }
    delete[] From;
}
0
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
24.08.2023, 16:00
Цитата Сообщение от Наталья8 Посмотреть сообщение
Они на диалекте C++CLI.
это ж один из .....ти вариантов как можно сделать форму с кнопкой под винду
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
24.08.2023, 16:01
Цитата Сообщение от Royal_X Посмотреть сообщение
Иногда функции кроссплатформенных фреймворков говно.
если прога состоит из одних тока функций фреймворка, то возможно - да.
а если любой ваш фреймворк это всего лишь < 0.01% от всего вашего сложно реализованного функционала,
то пофик на фреймворк...
1
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
24.08.2023, 16:09
Цитата Сообщение от Royal_X Посмотреть сообщение
Фреймворки это компромиссные решения для ленивых
Попробуй погоняй картинку, поперекладывай туда - сюда, без opencv.
Это будет реальный мозахизм.

Добавлено через 5 минут

Не по теме:

Цитата Сообщение от XLAT Посмотреть сообщение
чем больным и нищим...
Хорошо, что мучиться не долго...

0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
24.08.2023, 16:14
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
24.08.2023, 23:08
Вот такой кнопка делал...
final_file(9).mp4
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
25.08.2023, 02:30
Для несчастных, так и не накопивших на ОС Виндовс:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <gtkmm.h>
 
class MainWindow : public Gtk::ApplicationWindow {
public:
    MainWindow();
private:
    Gtk::Grid m_layout;
    Gtk::Label m_label;
    Gtk::Button m_button;
};
 
MainWindow::MainWindow() : m_button{"Click me"} {
    m_label.set_text("Click the button...");
    m_button.signal_clicked().connect([this](){
        m_label.set_text("Oh, yeah! You did it!");
    });
    
    m_layout.attach(m_label, 0, 0, 1, 1);
    m_layout.attach(m_button, 1, 0, 1, 1);
    
    add(m_layout);
}
 
int main(int argc, char** argv) {
    auto app = Gtk::Application::create(argc, argv, "org.gtkmm.examples.base");
    MainWindow window;
    
    window.show_all();
    
    return app->run(window);
}
Code
1
2
[andrew@centandrew gtkmm]$ g++ simple_button.cpp $(pkg-config --cflags --libs gtkmm-3.0)
[andrew@centandrew gtkmm]$ ./a.out
Название: simple_button1.png
Просмотров: 205

Размер: 4.4 Кб

Название: simple_button2.png
Просмотров: 201

Размер: 4.8 Кб
2
 Аватар для qppq
145 / 89 / 23
Регистрация: 31.08.2016
Сообщений: 780
Записей в блоге: 2
25.08.2023, 07:52
Цитата Сообщение от easybudda Посмотреть сообщение
Для несчастных, так и не накопивших на ОС Виндовс:
а на какой OC это запускать, DOS?
0
Лежебока
 Аватар для Donkix
328 / 244 / 95
Регистрация: 12.05.2021
Сообщений: 1,429
Записей в блоге: 2
25.08.2023, 08:52
Цитата Сообщение от L1nexx Посмотреть сообщение
То есть чтоб когда мышкой наводишься на определенную область
если область, то просто сравниваешь координаты мыши с этой областью...
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
25.08.2023, 11:59
Цитата Сообщение от qppq Посмотреть сообщение
а на какой OC это запускать, DOS?
Это гуглится за пару сек.
gtkmm
Простыми словами это С++ интерфейс для кроссплатформенной GUI библиотеки GTK.
GTK доступна для след семейства ОС :
GNU/Linux, macOS, Unix-подобная операционная система, Microsoft Windows и Linux
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6305 / 3027 / 1053
Регистрация: 01.06.2021
Сообщений: 11,483
25.08.2023, 12:17
SmallEvil, я вот погуглил, оказывается очень много топовых программ написано на GTK. Видимо, хорошая библиотека.
1
Модератор
Эксперт Java
 Аватар для alecss131
2893 / 1399 / 412
Регистрация: 11.08.2017
Сообщений: 4,481
Записей в блоге: 2
25.08.2023, 12:44
Royal_X, по этой же логике, почти весь коммерческий 3д софт написан на Qt
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,538
Записей в блоге: 1
25.08.2023, 13:22
Цитата Сообщение от XLAT Посмотреть сообщение
больше оно нигде, акромя винды не работает.
всегда убивал этот аргумент. Можно подумать, кому-то пипец как надо типичные офисные приложения запускать из-под линукса...
Я понимаю, когда у приложения на линуксе есть веб-интерфейс. Крутится оно на удалённом серваке, перемалывает свои гигабайты в гигабиты, а юзер, лёжа на пляжу, только заходит с мобильника на веб морду и смотрит красивые формочки в вебе.
Я понимаю, когда приложение на винде перемалывает свои гигабайты в гигабиты локально, для него можно и на АПИ морду сделать.
Но кому в здравом уме придёт в голову мысль рисовать формы для Линукса? Пусть скажут спасибо, если у приложения есть консольные ключи для запуска.
0
Just Do It!
 Аватар для XLAT
4219 / 2680 / 656
Регистрация: 23.09.2014
Сообщений: 9,235
Записей в блоге: 3
25.08.2023, 13:27
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
всегда убивал этот аргумент
сей аргумент есть железобетонный факт.
неудивительно, если об него со всего маху биться, то оно может и убивать))

но если вам дядя дал задачу за вознаграждение, то любые левые аргументы испаряются, акромя требований от самой задачи.
0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
25.08.2023, 13:31
Может мало кому понятно. Сам наворотил....
Это всё в цикле вставлено, где опросы клавишь и мышей...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cv::Mat image1 = image.clone();//  <-- делает два мата
    static short flash_; static bool bl(true);// Кнопочка мигает
 //---------------------------------
 
if(flash_==5){ flash_=0;
    if(bl)bl=false;
     else bl=true; } if(!bl )Roi.copyTo(image1(_WhereRec));// кнопку копировать на картинку
      flash_++;// мигает кнопка
 //---------------------------------
 
int shift(340 - flash_);
//-------------- Вот это прозрачность, через копированое пикселей.... Единоразовая наклейка кнопки.
// -------------- След проход цикла, координаты сдвинуться и кнопка наклееться ещё раз.
Mat Roi_n = Roi_z.clone();// Если не клонировать, то место через ссылку непостижимым образом засираеться
    for (int y = 0; y < Roi_n.rows; ++y)//  копирование пикселей с заднего плана на передний
    for (int x = 0; x < Roi_n.cols; ++x)
    {   cv::Vec3b & pixel = Roi_n.at<cv::Vec3b>(y, x);
        cv::Vec3b & pixel_back = image1.at<cv::Vec3b>(57 + y, shift + x);//где брать задний пиксель
        //---------------------
if (pixel[0] >= 113 && pixel[0] <= 147 && pixel[1] >= 113// Допуски по цвету (цвет серый)
                  && pixel[1] <= 147 && pixel[2] >= 113 && pixel[2] <= 147)
        {
    pixel[0] = pixel_back[0]; pixel[1] = pixel_back[1]; pixel[2] = pixel_back[2];// Копируем пикселя
        }
    } Roi_n.copyTo(image1(Rect(shift, 57, Roi_n.cols, Roi_n.rows)));// Наклеиваем 
    //--------------

А нажатия ловил вот таким кальбаком. (В opencv есть свой родной)
Топорно конечно но по другому на opencv не сделаешь. Наворотил. Переделывать поздно...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
///////////////////////////// Кнопки под мышь триггерные (меняет стикеры) управление
void myMouseCallback( int event, int x, int y, int flags, void* param )
{    static bool trigger(false);
 static bool drawL(false); static bool drawR(false);
  static short draw_oldX; static short draw_oldY;
               switch( event ){
                case CV_EVENT_MOUSEMOVE: // --- Изменение размеров рамки (ЛКМ + ВВЕРХ-ВНИЗ)
if (y > draw_oldY && drawL && y % 2 != 0 && scr_wind.right > x_min) scr_wind.right--;// Горизонтальный размер рамки
if (y < draw_oldY && drawL && y % 2 != 0) scr_wind.right++;// Должен делиться на четыре
if (y > draw_oldY && drawR && y % 2 != 0 && scr_wind.bottom > y_min) scr_wind.bottom--;
if (y < draw_oldY && drawR && y % 2 != 0) scr_wind.bottom++;
                draw_oldX= x; draw_oldY= y;         
                    break;
                        //----------
                case CV_EVENT_LBUTTONUP:
                     if(!trigger) trigger=true;
                     else trigger=false;
                                         drawL=false;
                        break;
               
                case CV_EVENT_LBUTTONDOWN:
                                          drawL=true;
if (x > x_button && x < x_button + 125 && y > y_button && y < y_button + 35)control::next_step = true;
                    //--------------- если x_button отрицательное, то попадёшь сработает (кнопка не показана)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6305 / 3027 / 1053
Регистрация: 01.06.2021
Сообщений: 11,483
25.08.2023, 13:38
Kuzia domovenok, я очень рад, что линукс существует в этом мире (и что благодаря ядру Linux есть Android), но эта ОС не так уж даже популярна. Возможно, есть сферы, где линукс популярен (например, как ОС для суперкомпьютеров или в какой-то научной среде), но я имею в виду в глобальном плане.

В общей статистике операционных систем на рынке за июль 2023 она занимает меньше 1 %.



И только в статистике десктопных ОС она занимает чуть больше

0
Нарушитель
623 / 381 / 67
Регистрация: 09.03.2016
Сообщений: 4,218
25.08.2023, 13:46
---------------------------

Добавлено через 2 минуты
Цитата Сообщение от Royal_X Посмотреть сообщение
на рынке
Так кто же винду покупает?
Все её воруют...
(Кто может посчитать такой процесс?)
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6305 / 3027 / 1053
Регистрация: 01.06.2021
Сообщений: 11,483
25.08.2023, 13:49
Наталья8, я привёл статистику пользования, а не продаж. Т.е. статистика популярности ОС.
0
25.08.2023, 13:59

Не по теме:

У всех моих знакомых, отнюдь не линукс.
И ни кто винду не покупал...
Может кто то вместе с нотбуком,
Но обычно компьютеры собраны ручками из подручных.
Кто что где накомпилировал.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.08.2023, 13:59

Как сделать многострочную кнопку?
В WinAPI есть такой флаг BS_MULTILINE. А что может предложить Qt?

Как сделать активной кнопку
Как сделать активной кнопку во время выполнения функции под другой кнопкой что бы можно было остановить, отменить?

Как сделать кнопку не активной?
Создаю Визардом диалоговый проект: В окне две кнопки... нужно чтобы при нажатии на Button1 делалась не активной Button2 Пробую...

Как сделать не стандартную кнопку
есть картинка к примеру крестик как натянуть ее на кнопку и менять к примеру на нолик при наведении. Пытался натенуть сам но кнопка...

Как сделать красивую кнопку?
Очень редко вижу такие кнопки: . И очень часто такие: . Как сделать второй вариант?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Оказывается, Unreal Engine позволяет качество на порядки выше, чем было в Lineedge
Etyuhibosecyu 05.07.2026
Жаль, конечно, что я не узнал об этом, пока Lineedge существовала, а то бы Noname2331 написал, что волки превращаются в пиксельную кашу, а я бы его попросил скачать какую-нибудь бриллиантовую или Pro. . .
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru