Mavzu: Amaliy ishlarni tahlil qilish 1-masala. Masalaning qo`yilishi



Download 96,61 Kb.
bet7/10
Sana09.04.2022
Hajmi96,61 Kb.
#538942
1   2   3   4   5   6   7   8   9   10
Bog'liq
Амалий дарс 2

widget.cpp


Pleyerni amalga oshirish uchun siz dastur oynasining sarlavha faylida e'lon qilingan QMediaPlayer, QMediaPlaylist va QStandardItemModel ob'ektlarini ishga tushirishingiz kerak. Konstruktorning birinchi yarmida jadvalning ko'rinishi pleylistni ko'rsatishga sozlangan, ikkinchi bo'limda pleerning o'zi sozlangan.

  1. Pleyer m_playlist (navigatsiya uchun) va m_player (boshlash / to'xtatib turish / to'xtatish uchun) ni boshqarish uyalariga ulangan tugmalar orqali boshqariladi.

  2. Joriy trekni o'zgartirganda pleer avtomatik ravishda o'zgartirishdan oldin o'qilgan trekni tugatadi va yangi trekni tinglashni boshlaydi.

  3. QMediaPlaylist-da jadvalda namoyish qilish uchun model mavjud emasligi sababli, biz QStandardItemModel sinfidan foydalanamiz, shuning uchun u erda ham, u erda ham fayllarga yo'llar to'g'risida ma'lumot qo'shishimiz kerak bo'ladi.

  4. #include "widget.h"

  5. #include "ui_widget.h"

  6. #include

  7. #include


  8. Widget::Widget(QWidget *parent) :

  9. QWidget(parent),

  10. ui(new Ui::Widget)

  11. {

  12. ui->setupUi(this);

  13. // Настройка таблицы плейлиста

  14. m_playListModel = new QStandardItemModel(this);

  15. ui->playlistView->setModel(m_playListModel); // Устанавливаем модель данных в TableView

  16. // Устанавливаем заголовки таблицы

  17. m_playListModel->setHorizontalHeaderLabels(QStringList() << tr("Audio Track")

  18. << tr("File Path"));

  19. ui->playlistView->hideColumn(1); // Скрываем колонку, в которой хранится путь к файлу

  20. ui->playlistView->verticalHeader()->setVisible(false); // Скрываем нумерацию строк

  21. ui->playlistView->setSelectionBehavior(QAbstractItemView::SelectRows); // Включаем выделение строк

  22. ui->playlistView->setSelectionMode(QAbstractItemView::SingleSelection); // Разрешаем выделять только одну строку

  23. ui->playlistView->setEditTriggers(QAbstractItemView::NoEditTriggers); // Отключаем редактирование

  24. // Включаем подгонку размера последней видимой колонки к ширине TableView

  25. ui->playlistView->horizontalHeader()->setStretchLastSection(true);


  26. m_player = new QMediaPlayer(this); // Инициализируем плеер

  27. m_playlist = new QMediaPlaylist(m_player); // Инициализируем плейлист

  28. m_player->setPlaylist(m_playlist); // Устанавливаем плейлист в плеер

  29. m_player->setVolume(70); // Устанавливаем громкость воспроизведения треков

  30. m_playlist->setPlaybackMode(QMediaPlaylist::Loop); // Устанавливаем циклический режим проигрывания плейлиста


  31. // подключаем кнопки управления к слотам управления

  32. // Здесь отметим, что навигация по плейлисту осуществляется именно через плейлист

  33. // а запуск/пауза/остановка через сам плеер

  34. connect(ui->btn_previous, &QToolButton::clicked, m_playlist, &QMediaPlaylist::previous);

  35. connect(ui->btn_next, &QToolButton::clicked, m_playlist, &QMediaPlaylist::next);

  36. connect(ui->btn_play, &QToolButton::clicked, m_player, &QMediaPlayer::play);

  37. connect(ui->btn_pause, &QToolButton::clicked, m_player, &QMediaPlayer::pause);

  38. connect(ui->btn_stop, &QToolButton::clicked, m_player, &QMediaPlayer::stop);


  39. // При даблклике по треку в таблице устанавливаем трек в плейлисте

  40. connect(ui->playlistView, &QTableView::doubleClicked, [this](const QModelIndex &index){

  41. m_playlist->setCurrentIndex(index.row());

  42. });


  43. // при изменении индекса текущего трека в плейлисте, устанавливаем название файла в специальном лейбле

  44. connect(m_playlist, &QMediaPlaylist::currentIndexChanged, [this](int index){

  45. ui->currentTrack->setText(m_playListModel->data(m_playListModel->index(index, 0)).toString());

  46. });

  47. }


  48. Widget::~Widget()

  49. {

  50. delete ui;

  51. delete m_playListModel;

  52. delete m_playlist;

  53. delete m_player;

  54. }


  55. void Widget::on_btn_add_clicked()

  56. {

  57. // С помощью диалога выбора файлов делаем множественный выбор mp3 файлов

  58. QStringList files = QFileDialog::getOpenFileNames(this,

  59. tr("Open files"),

  60. QString(),

  61. tr("Audio Files (*.mp3)"));


  62. // Далее устанавливаем данные по именам и пути к файлам

  63. // playlist va playlist jadvallari

  64. foreach (QString filePath, files) {

  65. QList items;

  66. items.append(new QStandardItem(QDir(filePath).dirName()));

  67. items.append(new QStandardItem(filePath));

  68. m_playListModel->appendRow(items);

  69. m_playlist->addMedia(QUrl(filePath));

  70. }

  71. }



Download 96,61 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish