2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Qt menu
Сообщение15.11.2009, 20:40 


31/08/09
183
Подскажите, как в Qt изменить названия меню, например было Файл сделать File

 Профиль  
                  
 
 Re: Qt menu
Сообщение15.11.2009, 20:54 
Заслуженный участник


28/04/09
1933
Если Вы создаете форму с использованием Qt Designer, то нужно просто щелкнуть по названию меню и откроется режим редактирования надписи. Если же Вы подразумеваете программный путь, то см. пример Menus и его описание в Assistant'е (там наглядно и подробно описано).

 Профиль  
                  
 
 Re: Qt menu
Сообщение15.11.2009, 21:12 


31/08/09
183
Второй вариант, вообще мне надо языви менять, чтобы выбрал русский русский выбрал english english
Я там столько уже глянул, мне просто функция нужна, это ж ведь как то так должно быть mymenu->titleChange("File");
но не нахожу

 Профиль  
                  
 
 Re: Qt menu
Сообщение15.11.2009, 21:33 
Заслуженный участник


28/04/09
1933
После того, как Вы создали меню с помощью addMenu() и запомнили указатель на созданное, можно воспользоваться функцией setTitle():
код: [ скачать ] [ спрятать ]
Используется синтаксис C++
class MyMainWindow : public QMainWindow
{
//...
QMenu* fileMenu;
//...
};

//...

MyMainWindow::SomeFunction //какая-то функция
{
    fileMenu = menuBar()->addMenu("File");
}

MyMainWindow::OtherFunction //другая функция
{
    fileMenu->setTitle("Файл");
}
 

 Профиль  
                  
 
 Re: Qt menu
Сообщение15.11.2009, 21:43 


31/08/09
183
Огромнейшее спасибо EtCetera, вы мне уже у какой раз помагаете, сколько вы всего знаете )))
Спасибо

-- Вс ноя 15, 2009 22:48:57 --

Вот только ещё один вопрос а список меню как у него поменять имя ?
Код:
exitAct = new QAction(QIcon("quit.png"),"Закрыть", this);
    connect(exitAct, SIGNAL(triggered()), qApp, SLOT(closeAllWindows()));


-- Вс ноя 15, 2009 23:22:57 --

Сам разобрался вот так надо

Код:
exitAct->setText("Закрыть");

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 00:05 


31/08/09
183
А вот из этого сделать массив , подскажите пожалуйста

Код:
QRectF target(80.0, 50.0, 50.0, 50.0);
QRectF source(0.0, 0.0, 251.0, 241.0);
QImage image("arshavin.gif");
painter.drawImage(target, image, source);



т.е. должно получится как то вот так
Код:
QRectF target[5];
QRectF source(0.0, 0.0, 251.0, 241.0);
QImage image("arshavin.gif");
target[0].getCoord(80.0, 50.0, 50.0, 50.0);
target[1].getCoord(другие координаты);
target[2].getCoord(другие координаты);
target[3].getCoord(другие координаты);
target[4].getCoord(другие координаты);
for(int i=0;i<5;i++)
painter.drawImage(target[i], image, source);

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 00:28 
Экс-модератор


17/06/06
5004
А разве там нету каких-то более специальных и умных средств именно для локализации?

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 10:08 
Заслуженный участник


28/04/09
1933
mycoding
А что Вас не устраивает в приведенном Вами коде? Вроде бы все правильно (если Вы хотели именно этого: нарисовать одну и ту же картинку несколько раз по нескольким разным координатам). Только лучше (в смысле, несколько цивилизованнее) пользоваться не массивами, а списками.

AD
AD в сообщении #262455 писал(а):
А разве там нету каких-то более специальных и умных средств именно для локализации?
Есть. Связка функции QObject::tr() (для всех строковых констант в коде программы) и утилиты Qt Linguist (а также соблюдение еще нескольких этапов, чтобы все "блестело"). Эту же связку можно применять для более "продвинутых" случаев локализации, когда требуется не просто дословный перевод, а еще и учет падежей, чисел (единственное/множественное), родов, стилей записи дат и пр. (по крайней мере, функционал для таких вещей заложен). Впрочем, ничто не мешает использовать этот механизм даже для таких простых случаев. Так или иначе, всех интересующихся отсылаю к обзору Internationalization with Qt.

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 14:21 


31/08/09
183
Всё работает
вот код
Код:
QRectF target[5];
target[0].setRect(60.0, 100.0, 50.0, 50.0);
target[1].setRect(290.0, 100.0, 50.0, 50.0);
target[2].setRect(80.0, 300.0, 50.0, 50.0);
target[3].setRect(270.0, 300.0, 50.0, 50.0);
target[4].setRect(180.0, 40.0, 50.0, 50.0);
QRectF source(0.0, 0.0, 251.0, 241.0);
QImage image("arshavin.gif");
for(int i=0;i<5;i++)
painter.drawImage(target[i], image, source);

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 21:49 


31/08/09
183
Подскажите а как текст ещё вывести в paintevent,
а то какие то глюки.

-- Пн ноя 16, 2009 22:59:29 --

Так с этим разобрался, но вот не получается вывести числа
т.е. надо
Код:
painter.drawText(100,100, (char*)phils[0].eat);

Но так не работает , т.е. phils[100].eat==100 и надо это вывести
Пождскажите

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 22:12 
Заслуженный участник


28/04/09
1933
mycoding
Четче напишите, что именно надо вывести, пожалуйста. А то пока ничего непонятно.

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 22:15 


31/08/09
183
ВОт на всякий случай полностью пишу код paintevent
Код:
void MainWindow::paintEvent(QPaintEvent *event)
{

  QPainter painter(this);

  painter.setRenderHint(QPainter::Antialiasing);
  painter.setPen(QPen(QBrush("#575555"), 1));
/*
  painter.drawEllipse(100, 100, 300, 300);

  painter.drawEllipse(180, 110, 220, 150);
  painter.drawEllipse(130, 150, 170, 190);
  painter.drawEllipse(230, 150, 270, 190);
  painter.drawEllipse(130, 220, 170, 260);
  painter.drawEllipse(230, 220, 270, 260);
  painter.drawEllipse(180, 50, 220, 90);
  painter.drawEllipse(70, 100, 110, 140);
  painter.drawEllipse(70, 260, 110, 300);
  painter.drawEllipse(300, 120, 340, 160);
  painter.drawEllipse(300, 260, 340, 300);
*/
painter.drawEllipse(100, 100, 200, 200);

QRectF target[5];
target[0].setRect(60.0, 100.0, 50.0, 50.0);
target[1].setRect(290.0, 100.0, 50.0, 50.0);
target[2].setRect(80.0, 300.0, 50.0, 50.0);
target[3].setRect(270.0, 300.0, 50.0, 50.0);
target[4].setRect(180.0, 40.0, 50.0, 50.0);
QRectF source(0.0, 0.0, 251.0, 241.0);
QImage image("arshavin.gif");
for(int i=0;i<5;i++)
painter.drawImage(target[i], image, source);
//str=itoa(i, str, 10);
char my[3];
snprintf(my,3,"%d",phils[0].eat);
//itoa(phils[0].eat,my,10);
painter.drawText(100,100, my);
//painter.drawText(100,100, (char*)phils[0].eat);

  QString text = "Потоки";

  painter.setPen(QPen(QBrush("#575555"), 1));

  QFont font("Courier", x, QFont::Courier);
  QFontMetrics fm(font);
  int textWidth = fm.width(text);

  painter.setFont(font);


  if (x > 10) {
    opacity -= 0.01;
    painter.setOpacity(opacity);
  }

  if (opacity <= 0) {
    killTimer(timerId);
    std::cout << "timer stopped" << std::endl;
  }

  int h = height();
  int w = width();

  painter.translate(QPoint(w/2, h/2));
  painter.drawText(-textWidth/2, 0, text);

}



Вот а надо просто вывести как текст ну или как получится цифры из массива вот в этом paintevent-e

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 22:31 
Заслуженный участник


28/04/09
1933
mycoding
Воспользуйтесь статической функцией QString::number().

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 22:50 


31/08/09
183
А можете ещё в потоками подсказать.
Как это на Qt сделать мне бы простенький примерчик,
типа есть число 100 и 5 потоков его уменьшают, и как только один из число меньше 50 отсановить все потоки

 Профиль  
                  
 
 Re: Qt menu
Сообщение16.11.2009, 23:03 
Заслуженный участник


28/04/09
1933
mycoding
Чтобы такие программки писать, надо немножечко теоретическую базу подтянуть по поводу мьютексов, семафоров, событий и пр., иначе будет ужас (даже в этом простом примерчике).
Но вообще, есть класс QThread и в нем метод terminate(), который товарищи из Qt крайне не рекомендуют применять. Соответственно, лучше поступить по-другому, благо вариантов решения задачи предостаточно.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group