1

Тема: Як додати int до const char* ?

Вітаю. Я хочу написати маленьку програмку, котра б показувала горизонтальний слайдер, і коли той слайдер тягається - викликається команда з параметрами.
Я то все роблю в Qt Creator

void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    char* str = "xbacklight -set 40";
    system(str);
}

тут я використовую захардкоджене значення 40, але на цьому місці має бути значення змінної `value`. Я то вже цілу купу всього перепробував, але воно ніяк не працює. Як то зробити, аби все працювало?

2

Re: Як додати int до const char* ?

а гугл працює?

3

Re: Як додати int до const char* ?

зробив, але  є проблема, коли я тягаю слайдера довго і швидко, то процесор сильно навантажується.

#include "mainwindow.h"
#include "./ui_mainwindow.h"
#include "string.h"

using namespace std;

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_horizontalSlider_valueChanged(int value)
{
    string str = "xbacklight -set "+to_string(value)+" &";
    system(str.c_str());
}

чи можна то якось оптимізувати, адже зміна яскравості дисплея ніби просте завдання?

4

Re: Як додати int до const char* ?

чим фірмові утілити не до вподоби?

5

Re: Як додати int до const char* ?

Пане, system запускає процес bash з усіма прибамбасами, той аналізує команду і запускає процес xbacklight, купа читань з диска і обробки - а ви хочете економити пару операцій процесора на стрічках? Серйозно?
Розберіться, як працює xbacklight всередині і робіть те саме. Якщо буде заважко - ставте таймер і стежте, щоб зміни відбувалися не частіше ніж, скажімо, 10 разів на секунду. Бо наразі ви намагаєтеся економити сірники на підпалюванні величезного багаття, щоб зігріти собі каву.

Подякували: FakiNyan, leofun012

6

Re: Як додати int до const char* ?

koala написав:

Пане, system запускає процес bash з усіма прибамбасами, той аналізує команду і запускає процес xbacklight, купа читань з диска і обробки - а ви хочете економити пару операцій процесора на стрічках? Серйозно?
Розберіться, як працює xbacklight всередині і робіть те саме. Якщо буде заважко - ставте таймер і стежте, щоб зміни відбувалися не частіше ніж, скажімо, 10 разів на секунду. Бо наразі ви намагаєтеся економити сірники на підпалюванні величезного багаття, щоб зігріти собі каву.

З чого ви взяли, що я намагався економити щось на рядках? Я просто намагався запахнути integer в char*, тому що воно пише мені, що system приймає саме char

7

Re: Як додати int до const char* ?

По-моєму, це найпростіше зробити з допомогою sprintf().

Подякували: 0xDADA11C71

8

Re: Як додати int до const char* ?

system(QString("xbacklight -set %1").arg(value).toLatin1().data());

Якщо вже це Qt

Подякували: 0xDADA11C7, FakiNyan, leofun013

9

Re: Як додати int до const char* ?

Ось тут можете чесно позичити код:
https://gitlab.freedesktop.org/xorg/app … acklight.c