You need to move the queries populating itemList and eventList outside of your for loop. Traditionally, when you need information like that, you query everything you need once and then put it into a map for looking up later.
For instance:
// Get all the Account Ids
List<String> accountIds = new List<String>();
for (Task t : Trigger.new)
{
accountIds.add(t.AccountId);
}
Map<String, List<Task>> taskMap = new Map<String, List<Task>>(); // keyed by AccountId
for (Task t : [select Id, AccountId, Type, Status, ActivityDate, OwnerId from Task where accountId = :accountIds and status = 'Completed' and Type ='QRC' Order By ActivityDate Desc ])
{
List<Task> tasks = new List<Task>();
if (taskMap.containsKey(t.AccountId))
{
tasks = taskMap.get(t.AccountId);
}
tasks.add(t);
taskMap.put(t.AccountId, tasks);
}
This example based on the itemList above gets you a Map keyed by the Account ID of all the Tasks belonging to that Account. When you need to reference that list, you just key into the map and get the value (and best of all, it only counts as a single SOQL query that you can use across your entire trigger).
Take a look at the APEX Best Practices, bulkifying your code is a huge part of developing scalable Salesforce applications.